epoll and negative errno value
epoll and negative errno value
我有ERROR_OUT函数,它在控制台中使用vfprintf来记录错误。当我试图用这个函数ERROR_OUT(L_NOTICE, "Epoll error: %d", errno);
记录一些epoll错误时,我有时会得到奇怪的输出:
Epoll error: -1079274856
我仅在epoll_wait
和epoll_ctl
之后使用它,并且仅在返回值为负的情况下调用它。
ERROR_OUT:
void ERROR_OUT(int level, char *template, ...){
va_list ap;
va_start(ap, template);
if ( level <= verbosity ){
if (output_handler == NULL){
vfprintf(stderr, template, ap);
}else{
(*output_handler)(level, template, ap);
}
}
va_end(ap);
}
输出处理程序代码:
void log_both(int level, const char *fmt, ...){
va_list argp;
va_start(argp, fmt);
vfprintf(stderr, fmt, argp);
printf("n");
if (globalArgs.db_verbosity >= level)
globalArgs.db_log->log_error(format(fmt, argp));
va_end(argp);
}
通过*output_handler
将va_list
传递给log_both
,并将va_list
包装在名为argp
的va_list
中。
因此,您实际上将包含va_list
的va_list
传递给vfprintf
作为第三个参数,该参数期望%d
的小数是va_list
的第一个元素。
因此,它应该是void log_both(int level, const char *fmt, va_list argp){}
, va_list argp;
, va_start(argp, fmt);
和va_end(argp);
从函数体中删除。
void log_both(int level, const char *fmt, va_list argp){
vfprintf(stderr, fmt, argp);
printf("n");
if (globalArgs.db_verbosity >= level)
globalArgs.db_log->log_error(format(fmt, argp));
}
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 为什么static_assert错误:即使我传递常量"expression must have a constant value"?
- 为什么我会" void value not ignored as it ought to be"?
- 方法错误"not all control paths return a value"和方法不返回值
- 重新定义预定义的 errno 错误消息 (E2BIG)
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- 如何在 c++ 中理解这样的代码 [request->headers().Method()->value().getStringView())]
- std::<key-value>不同类型的对向量
- c++ visual studio 64bit | save registers value
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 如何解决类成员函数中的"return a value"错误?
- bsoncxx: document::view vs document::value
- .value( "key" , default) 不适用于空的 json 对象吗?
- 如何在C++中设置演员的"Render Custom Depth Pass"和"Depth Stencil Value"?
- Qt 错误:QSqlQuery::value:尝试从表中检索统计信息时未定位在有效记录上 (QComboBox)
- Fileno,Errno:"no"是什么意思?(非英语母语)
- UDP 服务器无法发送回复,发送返回 -1,errno 为 22
- 马洛克会在 C++17 年返回"invalid pointer value"吗?
- 如何将 v8::FunctionCallbackInfo<v8::Value> 数组从一个隔离复制到另一个隔离?
- epoll and negative errno value