睡后杀人
使用kill(pid,SIGTERM)后我无法让我的程序休眠() 我能做些什么 ?
我正在使用的代码:
kill(PID_of_Process_to_be_killed,SIGTERM);
sleep(5); --> this is not working
sleep(5); --> this is working
现在的解决方案是:
kill(PID_of_Process_to_be_killed,SIGTERM);
sleep(sleep(5));
但是为什么kill后的第一次睡眠返回0?
i couldnt make my program sleep() after using kill(pid,SIGTERM)
what can i do ?
The code i'm using:
kill(PID_of_Process_to_be_killed,SIGTERM);
sleep(5); --> this is not working
sleep(5); --> this is working
the solution for now is:
kill(PID_of_Process_to_be_killed,SIGTERM);
sleep(sleep(5));
but why the first sleep after kill return 0 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的
sleep()
调用可能会因收到信号而提前终止。检查返回值。如果结果为正,您可能需要在该值上再次sleep()
。来自http://www.manpagez.com/man/3/Sleep/:Your
sleep()
call may be terminating early due to receiving a signal. Check the return value. If it's positive, you might want tosleep()
again on that value. From http://www.manpagez.com/man/3/Sleep/:除非你处理这个信号,否则 SIGTERM 就是死亡。
如果是另一个进程或线程发送信号 sleep 将返回 EINTR。
如果您使用标准库而不是直接系统调用(您可能是),sleep 将返回 -1 且 errno = EINTR。
Well unless you handle the signal, SIGTERM is death.
If its another process or thread sending the signal sleep returns EINTR.
If you're using the standard library instead of direct system call (you probably are) sleep returns -1 and errno = EINTR.