为下面这段代码写源程序清单:#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { pid_t pid1, pid2; pid1 = fork(); if (pid1 < 0) { printf("fork error!\n"); exit(1); } else if (pid1 == 0) { printf("child process 1 (pid = %d) is running, print b.\n", getpid()); printf("b\n"); exit(0); } else { pid2 = fork(); if (pid2 < 0) { printf("fork error!\n"); exit(1); } else if (pid2 == 0) { printf("child process 2 (pid = %d) is running, print c.\n", getpid()); printf("c\n"); exit(0); } else { printf("parent process (pid = %d) is running, print a.\n", getpid()); printf("a\n"); wait(NULL); wait(NULL); exit(0); } } }
时间: 2024-03-18 21:42:24 浏览: 60
下面是给出该段代码的源程序清单:
```
/*
* 演示使用 fork() 创建两个子进程,并让它们分别输出字符 b 和 c,父进程输出字符 a。
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
pid_t pid1, pid2;
pid1 = fork(); // 创建第一个子进程
if (pid1 < 0) { // fork() 失败
printf("fork error!\n");
exit(1);
} else if (pid1 == 0) { // 子进程 1
printf("child process 1 (pid = %d) is running, print b.\n", getpid());
printf("b\n");
exit(0);
} else { // 父进程
pid2 = fork(); // 创建第二个子进程
if (pid2 < 0) { // fork() 失败
printf("fork error!\n");
exit(1);
} else if (pid2 == 0) { // 子进程 2
printf("child process 2 (pid = %d) is running, print c.\n", getpid());
printf("c\n");
exit(0);
} else { // 父进程
printf("parent process (pid = %d) is running, print a.\n", getpid());
printf("a\n");
wait(NULL); // 等待子进程结束
wait(NULL);
exit(0);
}
}
return 0;
}
```
该程序是使用 fork() 系统调用创建两个子进程,并分别输出字符 b 和 c,父进程输出字符 a。程序清单中包括了注释和格式化,方便程序员理解和维护。
阅读全文