1.编写一C语言程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。
时间: 2024-10-18 22:10:55 浏览: 34
使用C语言的fork()函数在Linux中创建进程的实例讲解
在C语言中,你可以利用`fork()`函数创建子进程,并通过检查进程ID来确定当前进程是父进程还是子进程。这里是一个简单的示例程序,它演示了如何满足你的需求:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#define MAX_CHILDREN 3
int main() {
pid_t pid;
int i;
// 创建三个进程
for (i = 0; i < MAX_CHILDREN; ++i) {
pid = fork(); // 父进程调用fork()
if (pid == 0) { // 如果是子进程
switch (i) {
case 0:
printf("I am daughter.\n");
break;
case 1:
printf("I am son.\n");
break;
default:
printf("I am father (since this is the parent process).\n");
break;
}
return 0; // 子进程退出
} else if (pid > 0) { // 如果是父进程
printf("Child %d created.\n", i + 1); // 父亲记录子进程信息
} else { // fork失败
perror("fork failed");
exit(EXIT_FAILURE);
}
}
// 父进程等待所有子进程结束
wait(NULL);
return 0;
}
```
在这个程序中,我们首先用循环调用`fork()`,并根据子进程索引(实际上是进程的顺序)来设置相应的输出信息。每个子进程都会立即终止并在输出后返回,而父进程会继续执行直到所有的孩子都完成。
运行这个程序,你会看到屏幕上依次显示出"I am father","Child 1 created.","I am daughter.","Child 2 created." 和 "I am son."。
阅读全文