我需要用fork创建3个子进程。每个进程都应该永远运行并在循环中执行某些操作。
我写了一些代码,但是我认为这不是编码的好方法。它有效,但是我真的认为这不是编程的正确方法。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
pid_t pid1, pid2, pid3;
pid1 = fork();
// Fork Error
if (pid1 == -1) {
printf("Fork error\n");
return EXIT_FAILURE;
}
else if (pid1 == 0) {
printf("Child 1!\n");
while (1) ;
}
else {
pid2 = fork();
}
// Fork Error
if (pid2 == -1) {
printf("Fork error\n");
return EXIT_FAILURE;
}
else if (pid2 == 0) {
printf("Child 2!\n");
while (1) ;
}
else {
pid3 = fork();
}
// Fork Error
if (pid3 == -1) {
printf("Fork error\n");
return EXIT_FAILURE;
}
else if (pid3 == 0) {
printf("Child 3!\n");
while (1) ;
}
return EXIT_SUCCESS;
}
请,有人可以帮我更好的方法吗?
更新:我尝试了此代码,但无法正常工作
int main() {
pid_t pid[3];
for (int i = 0; i < 3; i++) {
pid[i] == fork();
if (pid[i] == -1) {
printf("Fork error!\n");
return EXIT_FAILURE;
}
else if (pid[i] == 0) {
printf("Child %d\n", i);
while (1) ;
}
}
wait(0);
return EXIT_SUCCESS;
}
该程序的输出为空
答案 0 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
int status = 0;
pid_t pid[3];
for (int i = 0; i < 3; i++) {
pid[i] = fork();
if (pid[i] == -1) {
perror("fork!");
return EXIT_FAILURE;
}
else if (pid[i] == 0) {
printf("Child %d\n", i);
while (1) ;
}
}
while(wait(&status) > 0);
return EXIT_SUCCESS;
}