- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
任艺锦操作系统实验报告 Linux进程创建与通信
2011-2012学年第一学期
专 业:
班 级:
学 号:
姓 名:任艺锦
提交日期:2011年11月实验二 Linux进程创建与进程通信
【实验目的
1. 熟悉有关Linux系统调用;
2. 学习有关Linux的进程创建,理解进程创建后两个并发进程的执行;
3. 通过系统调用wait()和exit(),实现父子进程同步;
4. 掌握管道、消息缓冲等进程通信方法并了解其特点和使用限制。
实验内容
1. 父进程创建子进程
实现父进程创建一个子进程,返回后父子进程分别循环输出字符串“The parent process.”及“The child process.”5次,每次输出后使用sleep(1)延时一秒,然后再进入下一次循环。给出源程序代码和运行结果。程序代码:
main()
{
int p1,i;
while ((p1=fork())==-1);
if (p10)
for (i=0;i5;i++)
{
printf(I am parent.\n);
sleep(1);
}
else
for (i=0;i5;i++)
{
printf(I am child.\n);
sleep(1);
}
}
运行结果:
The parent process.
The child process.
The parent process.
The child process.
The parent process.
The child process.
The parent process.
The child process.
The parent process.
The child process.
2. 父子进程同步
修改上题程序,使用exit()和wait()实现父子进程同步,其同步方式为父进程等待子进程的同步,即:子进程循环输出5次,然后父进程再循环输出5次。给出源程序代码和运行结果。程序代码:
main()
{
int p1,i;
while ((p1=fork())==-1);
if (p10)
{
wait(0);
for (i=0;i5;i++)
{
printf(I am parent.\n);
sleep(1);
}
}
else
{
for (i=0;i5;i++)
{
printf(I am child.\n);
sleep(1);
}
exit(0);
}
}
运行结果:
I am parent.
I am parent.
I am parent.
I am parent.
I am parent.
I am child.
I am child.
I am child.
I am child.
I am child.3. Linux管道通信
编写一个程序,实现以下功能。给出源程序代码和运行结果。
(1)父进程使用系统调用pipe()创建一个无名管道;
(2)创建两个子进程,分别向管道发送一条信息后结束;
子进程1发送:Child 1 is sending a message to parent!
子进程2发送:Child 2 is sending a message to parent!
(3)父进程从管道中分别接收两个子进程发来的消息并显示在屏幕上,父进程结束。两个子进程发送信息没有先后顺序要求。
源程序代码:
#includestdio.h
#includeunistd.h
#includesignal.hmain()
{
int p1,p2,fd[2];
char outpipe[50];
char inpipe1[50]=Child1 is sending a message to parent!;
char inpipe2[50]=Child2 is sending a messege to parent!;
pipe(fd);
while((p1=fork())==-1);
if (p1==0)
{
lockf(fd[1],1,0);
write(fd[1],inpipe1,50);
exit(0);
}
else
{
while((p2=fork())==-1);
if (p2==0)
{
lockf(fd[1],1,0);
write(fd[1],inpipe2,50);
exit(0);
}
else
文档评论(0)