仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 452|回复: 8
打印 上一主题 下一主题

[其他Linux] linux教程之lfork用法 inux多历程的总结

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 15:28:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
复杂了解为,一个历程暗示的,就是一个可实行程序的一次实行过程当中的一个形态。操纵体系对历程的办理,典范的情形,是经由过程历程表完成的。历程表中的每个表项,纪录的是以后操纵体系中一个历程的情形。
关于单CPU的情形而言,每特准时刻只要一个历程占用CPU,可是体系中大概同时存在多个举动的(守候实行或持续实行的)历程。
fork()用于从已存历程中创建一个新历程,新历程为子历程,老历程为父历程.能够经由过程反省"fork()"地前往值晓得哪一个是子历程哪一个是父历程。父历程失掉的前往值是子历程的历程号,而子历程则前往0。
基础形式是:
#include
#include
#include
#include
#include
#include
main()
{
pid_tpid;
intrv;
pid=fork();//创立历程
switch(pid)
{
case-1://前往-1的话,历程创立没乐成
perror("fork");
exit(1);
case0:
printf("CHILD:Thisisthechildprocess!
");
printf("CHILD:MyPIDis%d
",getpid());//挪用getpid失掉本人的PID
printf("CHILD:MyparentsPIDis%d
",getppid());//getppid()失掉父历程的PID
printf("CHILD:Entermyexitstatus(makeitsmall):");
scanf("%d",&rv);
printf("CHILD:Imouttahere!
");
exit(rv);
default:
printf("PARENT:Thisistheparentprocess!
");
printf("PARENT:MyPIDis%d
",getpid());
printf("PARENT:MychildsPIDis%d
",pid);//fork()前往的default值意味着你正在父历程中,前往值是子历程的PID。这是失掉子历程PID的独一办法
printf("PARENT:Imnowwaitingformychildtoexit()...
");
wait(&rv);//父历程必需守候子历程完成拾掇子历程的剩余后才干持续
printf("PARENT:Mychildsexitstatusis:%d
",WEXITSTATUS(rv));也就是父历程不克不及先于子历程灭亡。
printf("PARENT:Imouttahere!
");
}
}
//EXITSTATUS()是一个宏,从wait()前往值中提取实践的前往值。
//wait()怎样晓得在哪一个历程上守候?我的意义是,因为父历程能够有多个子历程,wait()实践守候地是哪个?谜底十分复杂,它守候开始加入的那一个。你能够经由过程以子历程的PID为参数挪用waitpid()指明是哪个子历程。
if(!fork())
{
printf("Imthechild!
");
exit(0);
}else
{
printf("Imtheparent!
");
wait(NULL);
}
linux是多用户和多历程的操纵体系,历程在操纵体系中的创立,城市天生一个历程形貌块,形貌以后历程的一切信息,包含,数据段、代码段、仓库段的地点,以后历程的情况变量,文件形貌符等。
fork函数历程:操纵体系先创立一个历程形貌块,然后把父历程的一切历程形貌符的信息准确拷贝过去,和父历程一样(除历程ID纷歧样外),代码段共享,数据段和仓库段复制,一切的存放器的值全体准确拷贝,文件形貌符大概准确拷贝。
fork的前往值,fork在父历程空间中前往子历程的PID,在子历程空间中前往0

</p>
每一个开发团队都对他的发行版做过测试后放出的.那些国际知名的大品牌更是如此。
乐观 该用户已被删除
沙发
发表于 2015-1-18 11:02:54 | 只看该作者
发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。
小魔女 该用户已被删除
板凳
发表于 2015-1-21 23:45:41 | 只看该作者
清楚了解网络的基础知识,特别是在Linux下应用知识,如接入internet等等。
admin 该用户已被删除
地板
发表于 2015-1-30 22:50:33 | 只看该作者
让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。?
莫相离 该用户已被删除
5#
发表于 2015-2-6 16:40:23 | 只看该作者
不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
变相怪杰 该用户已被删除
6#
发表于 2015-2-17 09:48:48 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
分手快乐 该用户已被删除
7#
发表于 2015-3-5 19:21:32 | 只看该作者
其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。
柔情似水 该用户已被删除
8#
 楼主| 发表于 2015-3-12 12:20:45 | 只看该作者
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
透明 该用户已被删除
9#
发表于 2015-3-19 22:23:50 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 07:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表