gpt4 book ai didi

c - 如何为多个子进程设置超时

转载 作者:行者123 更新时间:2023-11-30 17:23:58 24 4
gpt4 key购买 nike

我正在创建一个程序。它创建一些子进程。子进程在不同的轮次中随机杀死其他子进程。第一轮之后,一些子进程已死亡,而其他子进程仍然存活。所以我创建了一个“for”来等待 child 完成:

for (i = 0; i < numChild; i++) {

pidReturned[i] = wait(&returnValue[i]);

}

问题是并非所有进程都会死亡,所以我必须告诉“父亲”他必须停止等待不会死亡的进程。我用sigaction修改了SIGALRM以避免它杀死我的父亲。然后我调用alarm(1);因为我想“唤醒”父亲。仅当第一轮后只有一个 child 还活着时,这才有效,但如果有两个或更多,则“for”仍在等待所有仍然活着的进程。所以我不知道如何停止多个 waitS 而不仅仅是一个。请您注意

编辑:所有等待部分都是这样的:

sigemptyset(&block_kill);
sigaddset(&block_kill,SIGALRM);
sigaddset(&block_kill,SIGCHLD);

alarm(1);

sigprocmask (SIG_UNBLOCK, &block_kill, NULL);

for (i = 0; i < numChild; i++) {

pidReturned[i] = wait(&returnValue[i]);

}

最佳答案

创建一个警报处理函数,并在警报处理函数内,将全局变量 interrupted 设置为 1。然后在 for 循环中,在每次迭代时检查 interrupted 。如果 interrupted 为 1,则会跳出 for 循环。

关于c - 如何为多个子进程设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27355172/

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