gpt4 book ai didi

c - 等待功能不停

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:56 24 4
gpt4 key购买 nike

如何在不停止调用进程的情况下获取子进程(由 fork() 生成)信息(使用等待函数之一)? (c语言)

    while((waitpid(p , &i , 0) > 0))
{
continue;
}

请帮忙

最佳答案

waitpid() 函数的第三个参数是选项的位掩码,其中之一是(象征性地)WNOHANG。如果您在选项中包含它,那么 waitpid() 将不会阻塞,即使指定的子进程仍在运行。然后,您可以通过测试第二个参数返回的值来确定子进程是否实际上已终止:

if (WIFEXITED(i)) {
/* ... handle normal exit ... */
else if (WIFSIGNALED(i)) {
/* ... handle exit because of a signal ... */
}

但是,在子进程实际退出之前,您无法获取子进程的退出状态或清理它,因此,只有在子进程运行时父进程有其他工作要执行时,父进程才有用。在这种情况下,它将需要定期执行 waitpid() 直到它发现子进程已终止,否则它需要一些其他方式让子进程在完成时告诉它(信号,我/O, IPC).

关于c - 等待功能不停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com