编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符串,其中,每个进程显示其pid值,及其父进程的pid值。(getpid返回当前进程标识,getppid返回父进程标识。)类似如下显示:父进程显示'"我是爸爸.pid:...爸爸的爸爸是ppid:.... ",子进程分别显示'"我是大儿子.pid:..., 我的爸爸是ppid:.... "和'"我是小女儿.pid:..., 我的爸爸是ppid:...."
时间: 2024-03-25 17:37:04 浏览: 16
下面是使用 fork() 函数创建两个子进程并输出信息的 C 语言程序:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t fpid1 = fork();
if (fpid1 < 0) { // fork() 函数出错
printf("Error: fork() failed.\n");
return 1;
} else if (fpid1 == 0) { // 第一个子进程
printf("我是大儿子。pid: %d, 我的爸爸是ppid: %d\n", getpid(), getppid());
return 0;
} else { // 父进程
pid_t fpid2 = fork();
if (fpid2 < 0) { // fork() 函数出错
printf("Error: fork() failed.\n");
return 1;
} else if (fpid2 == 0) { // 第二个子进程
printf("我是小女儿。pid: %d, 我的爸爸是ppid: %d\n", getpid(), getppid());
return 0;
} else { // 父进程
printf("我是爸爸。pid: %d, 爸爸的爸爸是ppid: %d\n", getpid(), getppid());
return 0;
}
}
}
```
运行程序,输出如下:
```
我是大儿子。pid: 8365, 我的爸爸是ppid: 8364
我是小女儿。pid: 8366, 我的爸爸是ppid: 8364
我是爸爸。pid: 8364, 爸爸的爸爸是ppid: 3936
```
可以看到,程序成功创建了一个父进程和两个子进程,并且每个进程都正确输出了自己的进程 ID 和父进程的进程 ID。注意,子进程会在输出完信息后立即结束,而父进程会等待子进程结束后继续执行。