编写一段程序,使用系统调用fork()来创建两个子进程,并父进程重复显示字符串“parent:”和自己的标识数,子进程则重复显示字符串”child”和自己的标识数。
时间: 2024-09-27 20:16:19 浏览: 40
以下是一个使用 C 语言编写的简单示例,演示了如何使用 `fork()` 创建两个子进程并在父进程中循环显示字符串和自身标识,在子进程中同样如此:
```c
#include <stdio.h>
#include <unistd.h>
#define MAX_PROCESSES 2
int main(int argc, char *argv[]) {
pid_t child_pid[MAX_PROCESSES];
int parent_id = getpid(); // 获取父进程 ID
int i;
for (i = 0; i < MAX_PROCESSES; i++) {
if ((child_pid[i] = fork()) == -1) { // fork 创建子进程
perror("Fork failed");
return 1;
} else if (child_pid[i] == 0) { // 进入子进程
printf("child: %d\n", i);
} else { // 进入父进程
printf("parent: %d (%d)\n", parent_id, i); // 显示 "parent" 和自身标识
}
}
// 父进程等待子进程结束
for (i = 0; i < MAX_PROCESSES; i++) {
wait(NULL);
}
printf("Parent process exiting...\n");
return 0;
}
```
在这个程序中,我们首先声明了一个数组 `child_pid` 来存储子进程的PID。然后,我们在循环中调用 `fork()`,每次创建一个子进程。如果 `fork()` 成功,我们会检查返回值判断是否进入子进程还是父进程。在子进程中,我们会打印 "child" 和自身的标识,在父进程中,除了子进程的信息,还会显示 "parent" 和父进程的标识。
父进程最后通过 `wait(NULL)` 来等待所有子进程结束,确保程序流程的完整性。
阅读全文