第八周 补充 Linux进程管理Word下载.docx

上传人:b****1 文档编号:3594148 上传时间:2023-05-02 格式:DOCX 页数:7 大小:83.13KB
下载 相关 举报
第八周 补充 Linux进程管理Word下载.docx_第1页
第1页 / 共7页
第八周 补充 Linux进程管理Word下载.docx_第2页
第2页 / 共7页
第八周 补充 Linux进程管理Word下载.docx_第3页
第3页 / 共7页
第八周 补充 Linux进程管理Word下载.docx_第4页
第4页 / 共7页
第八周 补充 Linux进程管理Word下载.docx_第5页
第5页 / 共7页
第八周 补充 Linux进程管理Word下载.docx_第6页
第6页 / 共7页
第八周 补充 Linux进程管理Word下载.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第八周 补充 Linux进程管理Word下载.docx

《第八周 补充 Linux进程管理Word下载.docx》由会员分享,可在线阅读,更多相关《第八周 补充 Linux进程管理Word下载.docx(7页珍藏版)》请在冰点文库上搜索。

第八周 补充 Linux进程管理Word下载.docx

发送软中断就是向接收进程的proc结构中的相应项发送一个特定意义的信号。

3)陷阱:

由软件产生中断,指处理机和内存内部产生的中断。

4)异常。

二、相关函数

fork(),wait(),exit(),kill(),signal(),pipe()

1)fork()函数:

用于创建一个新进程(子进程)

•intfork();

•pid=fork();

•if(pid<

0){

•printf("

forkerror\n"

);

•exit(0);

}

•if(pid==0){

Thechildprocessisrunningnow!

\n"

}

•if(pid>

Theparentprocessisrunningnow!

2).wait()函数:

用来控制父进程与子进程的同步。

•#include<

sys/type.h>

sys/wait.h>

•(pid_t)wait(int*statloc);

3).exit()函数:

进程结束最常调用的函数

stdio.h>

•voidexit(intstatus);

4).kill()函数:

用于删除执行中的程序或者任务

•kill(intPID,intIID);

5).signal()函数是允许调用进程控制软中断信号的处理

signal.h>

•intsig;

•void(*func)();

•signal(sig,function);

6).pipe()函数用于创建一个管道。

•其调用格式为:

#include<

unistd.h>

•pipe(intfp[2]);

三、补充实验一:

编制实现软中断通信的程序

•Childprocess1iskilledbyparent!

!

•Childprocess2iskilledbyparent!

•Parentprocessiskilled!

•多运行几次编写的程序,简略分析出现不同结果的原因。

参考代码:

#include<

sys/types.h>

intwait_flag;

voidstop();

main(){

intpid1,pid2;

//定义两个进程号变量

signal(3,stop);

//或者signal(14,stop);

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

//若创建子进程1不成功,则空循环

if(pid1>

0){//子进程创建成功,pid1为进程号

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

//创建子进程2

if(pid2>

wait_flag=1;

sleep(5);

//父进程等待5秒

kill(pid1,16);

//杀死进程1

kill(pid2,17);

//杀死进程2

wait(0);

//等待第1个子进程1结束的信号

//等待第2个子进程2结束的信号

printf("

\nParentprocessiskilled!

exit(0);

//父进程结束

}

else{

signal(17,stop);

//等待进程2被杀死的中断号17

\nChildprocess2iskilledbyparent!

signal(16,stop);

//等待进程1被杀死的中断号16

\nChildprocess1iskilledbyparent!

exit(0);

voidstop(){

wait_flag=0;

 

四、补充实验二:

编制实现进程的管道通信的程序

使用系统调用pipe()建立一条管道线,两个子进程分别向管道写一句话:

•Childprocess1issendingamessage!

•Childprocess2issendingamessage!

而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

要求:

父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。

intpid1,pid2;

//定义两个进程变量

main(){

intfd[2];

charOutPipe[100],InPipe[100];

//定义两个字符数组

pipe(fd);

//创建管道

//如果进程1创建不成功,则空循环

if(pid1==0){//如果子进程1创建成功,pid1为进程号

lockf(fd[1],1,0);

//锁定管道

sprintf(OutPipe,"

\nChildprocess1issendingmessage!

//给Outpipe赋值

write(fd[1],OutPipe,50);

//向管道写入数据

sleep(5);

//等待读进程读出数据

lockf(fd[1],0,0);

//解除管道的锁定

//结束进程1

else{

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

//若进程2创建不成功,则空循环

if(pid2==0){

\nChildprocess2issendingmessage!

lockf(fd[1],0,0);

wait(0);

//等待子进程1结束

read(fd[0],InPipe,50);

//从管道中读出数据

printf("

%s\n"

InPipe);

//显示读出的数据

wait(0);

//等待子进程2结束

read(fd[0],InPipe,50);

printf("

exit(0);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2