操作系统第6次实验报告:使用信号

一、实验目的

通过编程进一步了解信号。

二、实验内容

在服务器上用Vim编写程序,完成以下两个作业:

作业1:发送SIGTERM结束子进程

  • int kill(pid_t pid, int sig);。通过kill函数向包括它本身在内的其他进程发送一个信号

    要求:

  • 在主进程中创建一个子进程

  • 子进程中死循环输出“Hello World”字符串

  • 主进程睡眠5s后,向子进程发送终止信号(SIGTERM)结束子进程

    作业2:发送ALARM、PAUSE

  • unsigned int alarm(unsigned int seconds);调用alarm函数在经过预定时间后发送一个SIGALRM信号

  • pause() stop until signal

    要求:

  • 将进程挂起,5秒后发送一个SIGALRM信号,继续运行。

1. 运行结果

  • 作业1

    是否编译通过?编译已通过并成功生成名为sbr的可执行文件

    是否运行结果正确?(逻辑也要正确)可以看到在子进程在5秒内输出五句Hello World后结束

  • 作业2

    是否编译通过?编译已通过并成功生成名为sbrr的可执行文件

    是否运行结果正确?(逻辑也要正确)可以看到我们睡了10秒,在进行到第五秒的时候发送了alarm信号激活了闹钟,闹钟函数结束 后继续睡觉直至第10秒

2. 源代码

作业1

#include<stdio.h>
#include<signal.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
​
int main() {pid_t pid=fork();//创建子进程if(pid==0){//进入子进程状态while(1){printf("Hello World\n");//输出sleep(1);//适量降低输出次数}}if(pid>0){//进入父进程状态sleep(5);//进入5秒的睡眠,以便子进程的输出kill(pid,SIGINT);//实现kill函数,通过SIGINT终止子进程printf("子进程已结束!");}return 0;
}

作业2

#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <stdbool.h>
​
void ala(){printf("叮叮叮~闹钟响啦!\n");//发送信号时执行的动作
}int main(){(void) signal(SIGALRM,ala);//更改SIGALRM信号的默认动作alarm(5);//设置闹钟的时常for(int i=0;i<10;i++){printf("我正在睡觉(~ o ~)-zZ.......\n");sleep(1);//适量降低输出次数,同时提示睡眠状态}return 0;
}

3.总结

学习了系统内置信号的使用,同时也加深巩固了子进程和父进程的创建和使用。

操作系统第6次实验报告:使用信号相关推荐

  1. 操作系统 进程调度-银行家算法实验报告

    实验要求 一. 实验目的 死锁会引起计算机工作僵死,因此操作系统中必须防止.本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家 ...

  2. java 第六次实验_操作系统第六次实验报告——使用信号量解决哲学家进餐问题...

    0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 通过编程进一步了解信号量. 2 实验内容 在服务器上用Vim编写一个程序:使用信号量解决任一个经典PV问题,测试给出结果,并 ...

  3. 操作系统生产者消费者问题实验报告

    操作系统实验报告 进程通信 1. 问题描述及需求分析: 问题描述 本次实验实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素. ...

  4. 上海大学操作系统(12)实验报告分享(SHU-OS)

    SHU-OS2 SHU操作系统1实验报告(1-6) SHU操作系统2实验报告(1-8) 上大操作系统实验做起来耗时耗力,教材又是远古老物,实验起来难度较大,特此分享出来希望能够对学弟学妹们有所帮助. ...

  5. matlab gui语音信号去噪的原理,多媒体实验报告语音信号的去噪增强处理

    一.实验目的●了解计算机存储信号的方式以及语音信号的特点.●掌握谱减法实现语音去噪增强的原理.二.实验设备条件●计算机(带话筒).●Matlab.三.实验要求1.利用windows自带的录音机录制一段 ...

  6. 操作系统读写者问题实验报告_操作系统知识点总结

    用户态和内核态 用户态和内核态的区别? 明白这两个概念之前,我们得知道用户空间和内核空间. 用户空间:指的就是用户可以操作和访问的空间,这个空间通常存放我们用户自己写的数据等. 内核空间:是系统内核来 ...

  7. 操作系统读写者问题实验报告_基于S3C2410微处理器和操作系统实现光电测量仿真检测系统的设计...

    引言 动基座光电测量平台按载体的不同可分为车载.舰载.机载和星载四种.为了保证测量平台系统的可靠性和测量的准确性,平台在正式放到载体上运行之前需要进行仿真检测.目前的动基座光电测量仿真检测系统大多成本 ...

  8. 操作系统读写者问题实验报告_备战秋招——操作系统(2)

    请你讲述一下互斥锁(mutex)机制,以及互斥锁和读写锁的区别 参考回答: 1.互斥锁和读写锁区别: 互斥锁:mutex,用于保证在任何时刻,都只能有一个线程访问该对象.当获取锁操作失败时,线程会进入 ...

  9. 操作系统读写者问题实验报告_什么是操作系统?

    什么是操作系统? 为什么说C / C++ 更底层 ? 电脑里只有一个CPU, 多线程是怎么实现的 ? 一些简单口胡, 也算对本学期的学习做一个总结 一言蔽之, 操作系统是管理下层硬件, 为上层软件提供 ...

最新文章

  1. 防火墙产品原理与应用:防火墙产品的技术及实现关于IPV6【寒假】
  2. 详解:开通IIS的FTP服务器并添加多个FTP用户
  3. 乒乓球比赛赛程_国乒今年最后一站比赛延期!赛程缩短比赛地温暖,教练组考察队员...
  4. java命令_JAVA与模式之命令模式
  5. js正则限制字符串长度_正则笔记(3)万字长文,慎点。
  6. OC 与 C++ 混编导致 ’string‘ not found
  7. [ERROR] InnoDB: ibdata1 different size (rounded down to MB)
  8. Spark共享变量(广播变量、累加器)
  9. 比特币 以太坊 真的是去中心化的吗?
  10. Linux修改文件出现错误E45:“readonly” option is set(add ! to override)退出不了vim
  11. centos安装nginx配置webpy
  12. 深入理解栈(Stack)
  13. 美团3年阿里4年,我的坎坷进阶之路
  14. 初中 昆虫记思维导图_《昆虫记》的思维导图
  15. 中国将强制统一充电接口,苹果如不低头,iPhone将被踢出中国市场
  16. 欠债1469亿北大光环消失,方正集团破产重整
  17. ptable java_ttable怎么在java中编写
  18. selenium java安装运行
  19. ByteV打造智慧充电桩运行可视化平台
  20. 《浅谈Cache Memory》 学习-第一章

热门文章

  1. 在线 - 支持word上传的富文本编辑器
  2. Java控制台游戏~600行代码实现打怪小游戏
  3. 图片放大不模糊,如何实现?
  4. 苹果画画软件_Mac必装的10个软件,让你的Mac如虎添翼
  5. 【颜纠日记】极简生活,盘点那些生活中的消耗品,耐用品,拯救你的断舍离。
  6. python bar图 百分比_matplotlib bar()实现百分比堆积柱状图
  7. 什么是单工通信、半双工通信、全双工通信?3种通信方式的区别是什么?
  8. MySQL- 经典面试题
  9. 为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
  10. Java使用对象使用属性过滤集合对象重复数据