操作系统进程控制实验报告(3)

时间:2025-07-15

{

printf(“fork error!”); exit(0); }

else if (pid==0) {

if(execve(path,argv,0)<0) {

printf(“fork error!”); exit(0); }

printf(“child is ok!\n”); exit(0); }

wait( );

printf(“it is ok!\n”); exit(0); }

3.创建一个共享内存,实现一个生产者进程写共享内存,一个消费者进程读共享内存,并在写前读后输出写和读的内容。

4.创建一个共享文件,实现一个写者进程写文件,2个读者在写者写后分别读出文件的内容,并给出读后评价。

二、实验指导

Linux中与进程控制相关的几个主要系统调用

三、实验步骤(附程序原码)

实验一:创建文件wang.c,编写C语言程序,实现在程序运行时通过系统调用fork

()创建两个子进程,使父,子三进程并发进行,父亲进程执行时屏幕显示“parent”,儿子进程执行时屏幕显示“son”,女儿进程执行时屏幕显示“daugher”。程序如下:

(进程一)#include<stdio.h>

int main()

{ int p1,p2,i;

while((p1=fork())==-1); if(p1==0)

for(i=0;i<4;i++)

printf("daughter%d\n",i); else

{ while((p2=fork())==-1); if(p2==0)

for(i=0;i<4;i++)

printf("son%d\n",i); else

for(i=0;i<4;i++)

printf("parent%d\n",i); } }

(进程二)

#include<stdio.h> int main() {

int pid; pid=fork(); switch(pid)

{ case -1:printf("fork fail\n");exit(1); case 0:printf("subprocess\n");exit(0);

default:wait(0);printf("completed\n");exit(0); } }

实验二:

编写程序,用fork创建两个子进程,再用系统调用signal让父进程捕捉键盘上传来的中

断信号,捕捉到中断信号后,父进程用系统调用kill向两个子进程发出信号,子进程终止。父进程等待两个子进程终止后终止。程序代码如下 #include<stdio.h> #include<signal.h> #include<unistd.h>

void waiting(),stop(); int wait_mark; int main() {

int p1,p2,stdout; signal(SIGINT,stop); while((p1=fork())==-1); if(p1>0) {

while((p2=fork())==-1); if(p2>0) {

wait_mark=1; sleep(5); waiting(); kill(p1,16); kill(p2,17); wait(0); wait(0);

printf("Parent process is killed!\n"); exit(0); } else {

wait_mark=1;

signal(17,stop); waiting();

lockf(stdout,1,0);

printf("Child process 2 is killed by parent!\n"); lockf(stdout,0,0); exit(0); } } else {

wait_mark=1;

signal(16,stop); waiting();

lockf(stdout,1,0);

printf("Child process 1 is killed by parent!\n");

操作系统进程控制实验报告(3).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219