3. 进行进程创建程序编码,要求使用fork()函数创建进程,父子进程中分别使用循环方式间隔1秒5次输出“I am child,pid = ”或“I am parent,pid =”。
时间: 2024-10-22 17:26:02 浏览: 34
在Unix/Linux系统下,可以使用`fork()`函数创建一个新的进程。这个函数会让当前进程复制自身,并返回一个新的进程ID(PID)。以下是使用C语言编写的一个简单示例,实现了按照你所描述的需求:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <time.h>
#define SLEEP_INTERVAL 1000 // 每次睡眠1秒
int main() {
pid_t pid; // 存储子进程PID
// 创建子进程
if (pid = fork()) { // 父进程
if (pid > 0) {
printf("I am parent, pid = %d\n", getpid());
for (int i = 0; i < 5; i++) {
sleep(SLEEP_INTERVAL);
printf("I am parent, pid = %d\n", getpid());
}
} else { // 子进程
printf("I am child, pid = %d\n", getpid());
for (int i = 0; i < 5; i++) {
sleep(SLEEP_INTERVAL);
printf("I am child, pid = %d\n", getpid());
}
}
return 0;
} else { // fork失败
perror("Fork failed");
return -1;
}
}
```
在这个例子中,主函数首先尝试通过`fork()`创建子进程。如果成功,父进程会继续执行,而子进程则会立即执行并打印出"I am child"。然后,它们都会进入各自的循环,每过一秒钟打印一次相应的消息,总共五次。
注意,每次循环前都有一段睡眠时间,以便控制输出的间隔。
阅读全文