C++ Linux中带分段错误的poll()系统调用核心转储
我在轮询系统调用中遇到分段错误,并转储以下代码的核心C++ Linux中带分段错误的poll()系统调用核心转储,c++,c,linux,C++,C,Linux,我在轮询系统调用中遇到分段错误,并转储以下代码的核心 wait_time(int wait_time) { struct pollfd fds; poll(&fds, 0, wait_time); } 从其他功能 void xyz() { int a=0; if (a==2) { wait_time(3); a=0; } a++; //something else i am doi
wait_time(int wait_time)
{
struct pollfd fds;
poll(&fds, 0, wait_time);
}
从其他功能
void xyz()
{
int a=0;
if (a==2) {
wait_time(3);
a=0;
}
a++;
//something else i am doing
}
main()
{
while(1)
{
xyz();
}
}
如何解决轮询系统调用时的核心转储问题?下面的解决方案很好
wait_time(int wait_time)
{
poll(NULL, 0, wait_time);
}
如果您只是想将该函数用作sleep函数,那么为什么不直接将NULL作为第一个参数传递呢?此外,还有其他更适合睡眠的方法将进程暂停指定时间,例如,您是否尝试过传递NULL而不是&fds?或者,您可以将fds.fd设置为负值以使函数调用忽略它。在修复上述代码中的小错误和警告后,添加include,等等,它在我的Linux机器上运行得非常好。作为32位和64位可执行文件。这似乎表明问题出在我正在做的其他事情上,或者类似的事情上。我们需要足够的代码来复制这个问题。错误最有可能出现在未显示的代码中。