gpt4 book ai didi

c - 如何创建多个进程

转载 作者:行者123 更新时间:2023-11-30 18:32:46 25 4
gpt4 key购买 nike

我需要创建 5 个进程(不是线程)并使用信号量在它们之间进行同步。同步算法类似于“循环”。问题是如何创建5个进程?我可以这样做吗:

pID = fork();

if(pID < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
}
else if(pID == 0) {
pID = fork();

if(pID < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
}
else if (pID == 0) {
pID = fork();

if (pID < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
} else if (pID == 0) {
pID = fork();

if (pID < 0) {
fprintf(stderr, "Fork Failed");
exit(-1);
} else if (pID == 0) {
/* Process 5 */
printf("process5 is running... id: %d\n", pID);
} else {
/* Process 4 */
printf("process4 is running... id: %d\n", pID);
}
} else {
/* Process 3 */
printf("process3 is running... id: %d\n", pID);
}
}
else {
/* Process 2 */
printf("process2 is running... id: %d\n",pID);
}
}
else {
/* Process 1 */
printf("process1 is running... id: %d\n",pID);

return (EXIT_SUCCESS);
}

最佳答案

是的,但是循环对其他人来说更容易阅读和理解。

int
call_in_child(void (*function)(void))
{
int pid = fork();
if (pid < 0) {
perror("fork");
return 0;
}
if (pid == 0) {
(*function)();
exit(0);
}
return 1;
}

然后去别的地方

for (i = 0; i < 4; i++) {
if (! call_in_child(some_function)) {
... print error message and die...
}
}
some_function();

并将程序的核心放入 some_function 中。

关于c - 如何创建多个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734989/

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