操作系统实验一 Linux基本环境及进程管理(6)

时间:2025-05-04

操作系统实验一 Linux基本环境及进程管理

daughter…等

分析:由于函数printf()输出的字符串之间不会被中断,因此,每个字符串内部的字符顺序输出时不变。但是 , 由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,输出字符串的顺序和先后随着执行的不同而发生变化。这与打印单字符的结果相同。

〈程序2〉

#include<stdio.h>

#include<unistd.h>

main()

{

int p1,p2,i;

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

if(p1==0)

{

lockf(1,1,0);

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

printf("child %d/n",i);

lockf(1,0,0);

}

else

{

while((p2=fork())==-1);

if(p2==0)

{

lockf(1,1,0);

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

printf("son %d/n",i);

lockf(1,0,0);

}

else

{

lockf(1,1,0);

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

printf("daughter %d/n",i);

lockf(1,0,0);

}

}

}

<运行结果〉

输出parent块,son块,grandchild块的顺序可能不同,但是每个块的输出过程不会被打断。 分析:因为上述程序执行时,lockf(1,1,0)锁定标准输出设备,lockf(1,0,0)解锁标准输出设备,在lockf(1,1,0)与lockf(1,0,0)中间的for循环输出不会被中断,加锁与不加锁效果不相同。

3.用fork( )创建一个进程,再调用exec( )用新的程序替换该子进程的内容;利用

操作系统实验一 Linux基本环境及进程管理(6).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

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

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

支付方式:

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

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