只需检查c中的状态进程

发布于 2024-10-03 08:38:00 字数 269 浏览 3 评论 0原文

我想知道进程的状态。我想我可以使用等待系列功能,但实际上我不想等待该过程,只需检查状态并继续。

我想要类似的东西

checkStatusOfProcess(&status);
if(status == WORKING) {
    //do something
} else if(status == exited) {
    //do something else
} else \\I dont care about other states

I want to know the status of a process. I think I can use the wait family functions but actually I don't want to wait for the process, just check the status and go on.

I would want something like

checkStatusOfProcess(&status);
if(status == WORKING) {
    //do something
} else if(status == exited) {
    //do something else
} else \\I dont care about other states

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

原野 2024-10-10 08:38:00

然后您希望将 waitpid 函数与 WNOHANG 选项一起使用:

#include <sys/types.h>
#include <sys/wait.h>

int status;
pid_t return_pid = waitpid(process_id, &status, WNOHANG); /* WNOHANG def'd in wait.h */
if (return_pid == -1) {
    /* error */
} else if (return_pid == 0) {
    /* child is still running */
} else if (return_pid == process_id) {
    /* child is finished. exit status in   status */
}

Then you want to use the waitpid function with the WNOHANG option:

#include <sys/types.h>
#include <sys/wait.h>

int status;
pid_t return_pid = waitpid(process_id, &status, WNOHANG); /* WNOHANG def'd in wait.h */
if (return_pid == -1) {
    /* error */
} else if (return_pid == 0) {
    /* child is still running */
} else if (return_pid == process_id) {
    /* child is finished. exit status in   status */
}
勿忘初心 2024-10-10 08:38:00

我认为你想要 waitpidWNOHANG

waitpid(pid, &status, WNOHANG);

I think you want waitpid with WNOHANG.

waitpid(pid, &status, WNOHANG);
め七分饶幸 2024-10-10 08:38:00

用信号 0 杀死它并检查返回值。

Kill it with signal 0 and check return value.

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