POSIX select()生成CPU负载

时间:2017-08-31 08:19:19

标签: c++ linux sockets posix

我们正在使用select()来监控TCP / IP套接字,这在我们的Linux程序中通常可以正常工作。超时是10秒。 但是,我们意识到在分离之后(例如通过nohup),我们的进程会产生100%的CPU负载。我们将它追踪到select()(在循环中调用)。 nfds我们的fd_set似乎很正常。如前所述,超时为10秒。对参数的值进行了双重检查(Tracelog / timer vs. strace)。

如果由于其父进程终止(这是默认用例)而导致进程被分离,则同一bash中的键盘描边(任意键)会导致进程产生100%的CPU负载(然后是永远保持)。如果我直接在nohup中启动我们的程序,那么负载从开始就是100%。

如果套接字出现任何问题,

select()会产生高CPU负载,而这种情况并非如此。

还有其他人想出过这样的问题吗?

0 个答案:

没有答案