pause函数

该函数功能主要是暂停进程,它的返回值总是-1

使用方式:

(1)首先使用signal函数提前注册一个中断函数,该函数用于将函数指针和信号做一个绑定;
(2)当程序进行执行pause,该进程暂停,等待处理信号,当任何信号到来时,程序将继续执行,不理会signal函数的响应。如果和signal中注册的信号相同,将会执行siganl中注册的函数,再继续执行后续代码;如果不同,将不会执行绑定的操作,直接退出。

以下是进程等待的信号表示:

信号表示 快捷键 该信号的意义
SIGINT Ctrl+C 进程中断
SIGTSTP Ctrl+Z 终端的停止信号

注意:

  • 使用fork创建子进程之后,父子进程都可以接受到信号;

    /*  In alarm.c, the first function, ding, simulates an alarm clock.  */#include <signal.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>static int alarm_fired = 0;void ding(int sig)
    {alarm_fired = 1;
    }/*  In main, we tell the child process to wait for five secondsbefore sending a SIGALRM signal to its parent.  */int main()
    {pid_t pid;printf("alarm application starting\n");pid = fork();switch(pid) {case -1:/* Failure */perror("fork failed");exit(1);case 0:/* child */sleep(5);kill(getppid(), SIGALRM);exit(0);}/*  The parent process arranges to catch SIGALRM with a call to signaland then waits for the inevitable.  */printf("waiting for alarm to go off\n");(void) signal(SIGALRM, ding);pause();
    //if (alarm_fired)printf("Ding!\n");printf("done\n");exit(0);
    }

    父进程通过pid=fork()创建子进程后,子进程在休息5秒后向父进程发送ALARM信号。
    此时父进程因为调用pause( )函数而被阻塞;
    但是如果在5秒时间内父进程收到任何其他的信号,父进程将不会执行 (void) signal(SIGALRM, ding);语句,而是继续执行剩下的语句;
    运行示例如下:在子进程向父进程发送ALARM信号时间内,通过终端向父进程发送Ctrl+C信号,此时父进程来不及接收子进程发送的ALARM,此时父进程的pause函数恢复执行。

linux系统编程:暂停函数pause相关推荐

  1. Linux系统编程——alarm函数

    alarm函数 函数原型:unsigned int alarm(unsigned int seconds); 函数描述:设置定时器(闹钟).在指定seconds后,内核会给当前进程发送14)SIGAL ...

  2. Linux系统编程------mmap函数

    mmap void *mmap(void* addr, size_t length, int prot, int flags, int fd, off_t offset) // 创建共享内存映射 参数 ...

  3. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  4. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数

    linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...

  5. 【Linux】一步一步学Linux系统编程教程汇总(暂时暂停更新......)

    00. 目录 文章目录 00. 目录 01. 概述和标准 02. 文件操作 03. 进程概念 04. 进程间通信 05. 多线程 06. 信号 07. 同步与互斥 08. 高级IO 09. 其它 10 ...

  6. 【Linux系统编程】vfork() 函数详解

    00. 目录 文章目录 00. 目录 01. vfork函数 02. fork和vfork区别 03. 父子进程地址空间 04. 附录 01. vfork函数 函数分析 #include <sy ...

  7. 【Linux系统编程】fork()函数详解

    00. 目录 文章目录 00. 目录 01. 进程创建函数 02. 父子进程结构 03. 父子进程地址空间 04. 附录 01. 进程创建函数 #include <sys/types.h> ...

  8. linux系统编程之文件与I/O(六):fcntl 函数与文件锁

    2013-05-14 11:26 8290人阅读 评论(2) 收藏 举报  分类: linux系统编程(19)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.fcntl函数 功能:操纵文 ...

  9. Linux系统编程1——系统函数

    文章目录 前言 一.C标准函数与系统函数的区别 1.什么是系统调用 2.文件描述符 3.相关函数 3.1 open函数 3.2 close函数 3.3 read函数 3.4 write函数 3.5 l ...

  10. Linux系统编程 37 -makefile2个函数和clean

    Linux系统编程 37 -makefile2个函数和clean 学习笔记 一个makefile 就是用一个个规则凑在一起 2个函数 wildcard patsubst wildcard 百搭牌,通配 ...

最新文章

  1. Windows Terminal 1.0 正式发布
  2. python实现redis分布式锁
  3. 《 Spring 实战 》(第4版) 读书笔记 (未完结,更新中...)
  4. 智能指针分配动态数组
  5. Pentaho Data Integration - Kettle 入门指南
  6. Stata和Matlab联合处理金融数据
  7. spark中local模式与cluster模式使用场景_Spark内核及通信框架概述-针对面试(后面有源码分析)...
  8. Tornado异步IO
  9. 大话RabbitMQ 基础入门
  10. Eclipse的工作空间与项目
  11. Linux 内核C -- 第02课:驱动中的指定初始化
  12. activex与matlab,在MATLAB图形用户界面设计中使用ActiveX控件
  13. 英语词根与说文解字词典读书笔记,并总结输出思维导图
  14. 配置authorized_keys让服务器A免密登录服务器B
  15. 项目反应理论 EM估计
  16. 聊聊这个本不存在的 “元宇宙”
  17. 使用python获取win10锁屏照片
  18. Linux进程间关系之终端与终端登录
  19. 计算机考英语一数学二,这所院校初试科目调整为数一英一!又有专业计划停招!这些信息21考研人一定要知道!...
  20. 购房,出资款性质如何认定?

热门文章

  1. 东莞理工学院计算机学院转专业,东莞理工学院学生在校期间是否允许转专业
  2. Login 命令使用方法
  3. 小学生都能读懂的网络协议之:WebSocket
  4. 尚医通-医院列表接口-等级接口-功能测试(二十二)
  5. 双十一成交额增速日渐下滑,电商之战的重点已在线下市场
  6. C# SolidWorks 二次开发 API --- 2018版 中文翻译-完整版共享
  7. 数据分析:pandas分析链家网二手房信息
  8. 将List导出到excel
  9. Temporal客户端模型
  10. 【xshell】xshell免费个人使用下载安装