编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。
时间: 2024-12-21 22:26:52 浏览: 3
在Unix/Linux环境下,你可以使用C语言编写这样的程序。下面是一个简单的示例,使用`fork()`函数创建子进程并分别向它们传递不同的信息:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#define CHAR_TO_DISPLAY(a) ((a == 0) ? 'a' : (a % 2 == 0) ? 'b' : 'c')
int main(void)
{
pid_t pid = fork(); // 创建子进程
if (pid == 0) { // 子进程
char ch = CHAR_TO_DISPLAY(pid); // 根据子进程ID获取字符
printf("子进程 %d 显示字符: %c\n", getpid(), ch);
return 0;
}
else if (pid > 0) { // 父进程
char ch = CHAR_TO_DISPLAY(0); // 父进程显示字符'a'
printf("父进程显示字符: %c\n", ch);
wait(NULL); // 等待子进程结束
} else {
printf("错误: fork() 失败\n");
return -1;
}
return 0;
}
```
在这个程序中,`fork()`会返回0给子进程,大于0给父进程。我们通过检查返回值来区分两者,并给每个进程分配相应的任务。
运行这个程序,你会看到屏幕上首先打印出"父进程显示字符: a",然后每个子进程(如果PID为0和1)将各自显示字符'b'和'c'。
阅读全文