睡后杀人

发布于 2024-10-05 06:10:21 字数 338 浏览 4 评论 0原文

使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风吹过旳痕迹 2024-10-12 06:10:21

您的 sleep() 调用可能会因收到信号而提前终止。检查返回值。如果结果为正,您可能需要在该值上再次sleep()。来自http://www.manpagez.com/man/3/Sleep/

如果 sleep() 函数由于请求的时间已过而返回,
返回的值将为零。 如果 sleep() 函数由于以下原因而返回
发送信号,返回的值将是未睡眠的数量
(请求的时间减去实际睡眠的时间)以秒为单位

Your sleep() call may be terminating early due to receiving a signal. Check the return value. If it's positive, you might want to sleep() again on that value. From http://www.manpagez.com/man/3/Sleep/:

If the sleep() function returns because the requested time has elapsed,
the value returned will be zero. If the sleep() function returns due to
the delivery of a signal, the value returned will be the unslept amount
(the requested time minus the time actually slept) in seconds

余厌 2024-10-12 06:10:21

除非你处理这个信号,否则 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文