操作系统实验进程的控制详细代码
时间: 2023-10-18 16:04:47 浏览: 83
这里提供一个简单的操作系统实验中,利用C语言实现进程控制的代码参考,供参考:
```
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main()
{
pid_t pid1, pid2, pid3;
int status;
pid1 = fork(); // 创建子进程1
if(pid1 < 0)
{
printf("Error: fork 1 failed.\n");
exit(1);
}
else if(pid1 == 0) // 子进程1
{
printf("Child process 1 is running.\n");
sleep(1); // 子进程1执行
printf("Child process 1 is finished.\n");
exit(0);
}
else // 父进程
{
pid2 = fork(); // 创建子进程2
if(pid2 < 0)
{
printf("Error: fork 2 failed.\n");
exit(1);
}
else if(pid2 == 0) // 子进程2
{
printf("Child process 2 is running.\n");
sleep(2); // 子进程2执行
printf("Child process 2 is finished.\n");
exit(0);
}
else // 父进程
{
pid3 = fork(); // 创建子进程3
if(pid3 < 0)
{
printf("Error: fork 3 failed.\n");
exit(1);
}
else if(pid3 == 0) // 子进程3
{
printf("Child process 3 is running.\n");
sleep(3); // 子进程3执行
printf("Child process 3 is finished.\n");
exit(0);
}
else // 父进程
{
printf("Parent process is waiting for child processes to finish...\n");
waitpid(pid1, &status, 0); // 等待子进程1结束
waitpid(pid2, &status, 0); // 等待子进程2结束
waitpid(pid3, &status, 0); // 等待子进程3结束
printf("All child processes are finished.\n");
}
}
}
return 0;
}
```
该代码中,首先创建了三个子进程,每个子进程分别执行不同的任务,并在执行完毕后调用exit()退出。父进程利用waitpid()等待子进程结束,最后输出所有子进程执行完毕的信息。
阅读全文