type
status
date
slug
summary
tags
category
icon
password
实验4 进程与进程同步
Linux进程同步
Linux信号机制:
sighold()函数
把指定的信号增加到信号掩码中去(将位图中对应的位标识为1),这样就暂时屏蔽了该信号。
返回值:成功返回0,失败返回-1。
sigrelse()函数
从信号掩码中移除指定的信号,这样进程就可以接收该信号了。
sigpause()会令目前的进程暂停(进入睡眠状态),直至向该进程发送某信号,进程才会被唤醒
kill()
发出一个特定的信号 (signal) 给进程, id 为 pid 的进程根据该信号而做特定的动作,若没有指定,预设是送出终止 (TERM) 的信号。
single(signo,funcaddr)
指定某信号signo的处理函数为funcaddr
填空题:
1、进程最重要的属性是进程号(Process Idenity Number,PID)和父进程号(Parent Process ID,PPID),它们都是___________。PID唯一标识一个进程。一个进程可以创建新的进程,新创建的进程称为____________,相应地,创建子进程的进程称为 ______________。
2、fork()函数执行成功返回两个值,它们是____________、_____________,分别返回给_____________、____________。执行失败,返回 _______________。
fork()
是创建进程的系统调用。
fork()
调用后,父子进程会各自继续执行代码,但返回值不同,父进程得到子进程的PID,而子进程返回0。
程序设计题:
1、写出运行下列程序的结果:
- 如下图为运行结果。
- 该程序演示
fork()
系统调用的行为,展示父进程与子进程在内存空间、变量、进程 ID(PID)等方面的独立性。

备注:
fork()
创建子进程:fork()
会复制当前进程,生成一个子进程。
- 它会返回三种值:
< 0
: 创建失败> 0
: 当前是父进程,返回子进程的 PID== 0
: 当前是子进程
2、使用unlink()系统调用,配合书本P185 8-29.c程序,编写一个守护程序(daemon),实现:
每隔30秒钟,删除当前目录下的“abc.txt”程序。
- 编写守护程序。
- 编写abc.txt文件

- 运行查看文件

3、利用信号机制signal,编写同步进程程序,一个进程输出输出奇数1、3、5、7、9,另一进程输出2、4、6、8、10,控制两个进程同步输出1、2、3、4、5、6、7、8、9、10.
- 编写代码如下
- 程序运行截图

4、利用pipe系统调用和管道机制,编写两个进程:子进程负责向管道中写入“hello world”,父进程负责从管道中读出这一串字符串。
- 编写代码
- 运行结果截图

- Author:Koreyoshi
- URL:https://Koreyoshi1216.com/article/1fbc7b13-c6a7-8001-9ec9-f65e38be67c1
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts