- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程终止exit - ke shi
实验三 Linux进程及信号灯;三、内容
1、熟悉Linux进程接口;
2、了解Linux信号灯的编程;
3、了解Linux共享内存的使用;
3、编程模拟实现誊抄;
创建三个誊抄进程;
基于共享内存建立缓冲区;
创建同步信号灯;
对各誊抄进程施加P、V操作。
;四、预备知识
1、Linux进程基本接口
进程创建:新进程是调用fork( )父进程的副本,称为子进程。子进程继承了父进程的许多特性,具有与父进程完全相同的用户级上下文,父进程与子进程并发执行。
接口:int fork( )
0:父进程返回,子进程的PID;
=0:子进程返回;
-1:创建失败。;加载程序 :exec( )系列
exec( )系列可以将一个可执行的二进制文件覆盖在进程的用户级上下文的存储空间上,即把一个新程序装入内存,来改变调用进程的执行代码。如果exec( )调用成功,进程从新程序的入口开始执行。
exec( )系列系统调用在unistd.h中,共有execl、execlp、execle、execv、execvp五个,其基本功能相同,只是以不同的方式来给出参数。
一种是直接给出参数的指针,如:
int execl(path,arg0[,arg1,...argn],0);
char *path,*arg0,*arg1,...,*argn;
另一种是给出指向参数表的指针,如:
int execv(path,argv);
char *path,*argv[ ];;wait、exec联合使用的示例:
int status;
int pid;
pid = fork( );
if (pid= =0)
{
...........;
/*执行命令ls -l -color */
execl(/bin/ls,ls,-1,-color,NULL);
...........;
}
wait(status); ;等待子进程结束wait
如果子进程没有完成,父进程一直等待。wait( )将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait( )前已有子进程暂停或终止,则调用进程做适当处理后便返回。
int wait(status)
int *status;
其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit( )的返回值。exit( )返回值由系统给出。 ;进程终止exit
系统调用格式:
void exit(status)
int status;
其中,status是返回给父进程的一个整数,以备查询。
为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit( )来实现进程的自我终止,exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。
如果调用进程在执行exit( )时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。 ;2、Linux共享内存
共享存储区是UNIX系统中通信速度最高的一种通信机制。该机制可使若干进程共享主存中的某一个区域,且使该区域出现(映射)在多个进程的虚地址空间中。
进程A的映像 内存 进程B的映像 ;创建、获得一个共享存储区shmget
系统调用格式:
int shmget(key,size,flag);
key_t key; //key是共享存储区的名字
int size, //size是其大小(以字节计);
int flag;//flag是用户设置的标志,如IPC_CREAT。IPC_CREAT表示若系统中尚无指名的共享存储区,则由核心建立一个共享存储区;若系统中已有共享存储区,便忽略IPC_CREAT。该函数使用头文件如下:
#includesys/types.h
#includesys/ipc.h
#includesys/shm.h;共享存储区的附接shmat
从逻辑上将一个共享存储区附接到进程的虚拟地址空间上。
系统调用格式:
virtaddr=shmat(shmid,addr,flag)
参数定义
char *shmat(shmid,addr,flag);
int shmid,flag;
char * addr;
其中,shmid是共享存储区的标识符;addr是用户给定的,将共享存储区附接到进程的虚地址空间;flag为0时,表示可读、可写;返回值是共享存储区所附接到的进程虚地址viraddr ;共享存储
您可能关注的文档
- 菲对黑麦草根系几种低分子量分泌物的影响 - 生态环境学报.doc
- 热学专题复习(一).ppt
- (biochemical drugs)、生物技术药物.ppt
- 巴赛尔内部评等基准法.doc
- 盐城市住宅工程渗漏质量通病控制技术规定 - 盐城市城乡建设局.doc
- (四川公路桥梁建设集团有限公司) - 四川成渝高速公路股份有限公司.doc
- 附件2:2010年北京理工大学外国文教专家重点项目下达表.doc
- 结构与抗震实验室.doc
- 1300 nm带 gainnas系高温度特性レーザ.pdf
- 下承式钢管混凝土无风撑系杆拱桥的设计与施工 - 中国土木科技网.pdf
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
原创力文档


文档评论(0)