首页 > 其他 > 详细

操作系统实验二

时间:2020-12-25 23:44:31      阅读:56      评论:0      收藏:0      [点我收藏+]

1. 实验目的及要求

\1. 分析进程争用临界资源的现象,学习解决进程互斥的方法。

\2. 了解fork( )系统调用的返回值,掌握用fork()创建进程的方法;

. 3. 熟悉wait、exit等系统调用。

2. 实验内容

修改程序,在父、子进程中分别使用wait、exit等系统调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。

3. 实验源码

#include <stdlib.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <stdio.h>

#include <unistd.h>

 

int main()

{

   int pid, status, exitstatus;

   if(fork() == 0) {

?      printf("This is the child process which pid is %d\n", getpid());

?      exit(1);

   } else {

?      pid = wait(&status);

?      exitstatus = WEXITSTATUS(status);

?      printf("child’s pid is %d and exit status is %d\n", pid, exitstatus);

   }

   return 0;  

}

4. 实验结果

技术分享图片

结果分析

Wait()返回值:若成功则返回子进程ID,若出错返回-1
说明:若调用者无子进程,则立即出错返回;若有,则在一个子进程终止前,wait使调用者阻塞,直到有一个子进程终止。
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止,当然 如果在调用wait()时子进程已经结束,则wait()就会立即返回子进程结束状态值参数status用来保存被收集进程退出时的一些状态,它是一个指向int类型的指针。

Exit()函数
功能:进程结束正常终止,返回结束状态。返回值:无
说明:status为进程结束状态。

操作系统实验二

原文:https://www.cnblogs.com/domy/p/14191107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!