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)等方面的独立性。
notion image
备注:
fork() 创建子进程:
  • fork() 会复制当前进程,生成一个子进程
  • 它会返回三种值:
    • < 0: 创建失败
    • > 0: 当前是父进程,返回子进程的 PID
    • == 0: 当前是子进程
 
2、使用unlink()系统调用,配合书本P185 8-29.c程序,编写一个守护程序(daemon),实现:
每隔30秒钟,删除当前目录下的“abc.txt”程序。
  • 编写守护程序。
  • 编写abc.txt文件
notion image
  • 运行查看文件
notion image
 
3、利用信号机制signal,编写同步进程程序,一个进程输出输出奇数1、3、5、7、9,另一进程输出2、4、6、8、10,控制两个进程同步输出1、2、3、4、5、6、7、8、9、10.
  • 编写代码如下
  • 程序运行截图
notion image
 
4、利用pipe系统调用和管道机制,编写两个进程:子进程负责向管道中写入“hello world”,父进程负责从管道中读出这一串字符串。
  • 编写代码
  • 运行结果截图
notion image
 
Relate Posts
编译原理:语法制导翻译技术和中间代码生成论文检索
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
编译原理:文法和语言
2025-6-3
智能体开发与接口调用
2025-6-3
软件工程:面向对象设计
2025-6-3
软件工程:面向对象的需求获取与需求分析
2025-6-3
软件工程:软件测试
2025-6-3
编译原理:语法制导翻译技术和中间代码生成
2025-6-3
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏