【Linux学习】倒计时退出,当进程收到SIGUSR1信号时开始倒计时,3秒钟后退出程序。

题目3:

编写一个程序实现倒计时退出功能,当进程收到SIGUSR1信号时开始倒计时,3秒钟后退出程序。
要求在终端上输出收到信号并开始倒计时的过程
如:
The process is terminating in 3 sec...
The process is terminating in 2 sec...
The process is terminating in 1 sec...

 1 #include <sys/types.h>
 2 #include <unistd.h>
 3 #include <signal.h>
 4 #include <stdlib.h>
 5 #include <string.h>
 6 #include <stdio.h>
 7 #include <errno.h>
 8 #include <signal.h>
 9
10 int g_tag;
11
12 void  myhandle(int num)
13 {
14     printf("recv signal id num : %d \n", num);
15     if (num == 10)
16     {
17         g_tag = 0;
18     }
19 }
20
21 int main(void)
22 {
23
24     g_tag = 1;
25
26
27     if ( signal(SIGUSR1, myhandle) == SIG_ERR )
28     {
29         perror("signal err");
30         return 0;
31     }
32
33     while(1)
34     {
35         if(g_tag == 0)
36         {
37             printf("The process is terminating in 3 sec...\n");
38             sleep(1);
39             printf("The process is terminating in 2 sec...\n");
40             sleep(1);
41             printf("The process is terminating in 1 sec...\n");
42             sleep(1);
43             break;
44         }
45     }
46
47
48     return 0;
49 }
时间: 2024-10-10 23:26:29

【Linux学习】倒计时退出,当进程收到SIGUSR1信号时开始倒计时,3秒钟后退出程序。的相关文章

linux学习之路之进程管理

什么是进程? 所谓进程就是将一个二进制文件加载到内存形成的一个个体,这就是一个进程. 在我们的linux系统中,系统只识别二进制文件,所以一个系统要想正常的运行时,必须启动一些二进制文件,从而形成进程,在以这些进程的方式去执行相应的任务. 我们常常听到所谓的程序,那么程序和进程是什么关系呢? 刚刚说过进程是由二进制文件加载到内存中形成的.而这些二进制文件就是程序. 可以这么来理解: 程序是实实在在地文件,是存放在磁盘上的. 进程是一个逻辑概念,进程是存在内存当中的,所以当机器重启,这些进程也随之

Linux学习笔记&lt;十六&gt;——进程管理

Process/Thread Model Stopped:进程收到停止信号后停止运行 Ready:正在运行 Executing正在运行队列中等待 Uninterruptible sleep:不可终端指的不是CPU不响应外部硬件的中断,而是进程不响应异步信号 Interruptible sleep:等待某些事件的发生而被挂起 Zombie:进程已终止,但进程的进程控制块(以及少数资源)没被回收 程序优先级,数字越小,越优先,更优先获得运行的机会,获得更多的CPU运行时间 0-99:内核控制 100

linux学习笔记--程序与进程管理

.工作管理 1.前台程序放后台程序  命令后 加  & 2.任务执行时将前台任务任务放到后台中并[暂停]  ctr + z 3.jobs 观察后台工作状态 及多少任务在执行,可以通过 help jobs查看jobs选项 [[email protected] ~]# jobs [-lrs] 参数: -l :除了列出 job number 之外,同时列出 PID -r :仅列出正在背景 run 的工作: -s :仅列出正在背景当中暂停 (stop) 的工作. 范例: 范例一:观察目前的 bash 当

LINUX退出当前进程——比较return、exit()

1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exit()函数 2>异常退出 a.调用abort函数 b.进程收到某个信号,而该信号使程序终止. 不管 是那种 退出方式,系统最终都会执行内核中的同一代码.这段代码用来关闭进程所用已打开的文件描述符,释放它所占用的内存和其他资源. 3>比较以上几种退出方式的不同点 (1)exit和return 的区别

linux学习之信号

一.概述: 软中断信号(signal, 简称信号)是用来通知进程发生了异步事件.在软件层次上是对中断的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达.进程之间可以互相通过系统调用kill发送软中断信号.内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件.信号机制除了基本通知功能外,还可以传递附加信息. 收到信号的进程对各种信号的

基于Linux 2.6.32的进程分析

前言 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. 本文的分析全部基于Linux Kernel 2.6.32,源代码的链接地址:https://elixir.bootlin.com/linux/v2.6.32/source/fs 具体内容分为: 进程的概念 进程的建立 进程的转换 进程的调度 对于进程的理解 一.进程的概念 1.1什么是进程 大众对进程的理解基本上基于打开任务管理器所看到的正在执行的软件等

linux各种IPC机制(进程通信)

linux各种IPC机制 (2011-07-08 16:58:35)     原文地址:linux各种IPC机制(转)作者:jianpengliu 原帖发表在IBM的developerworks网站上,是一个系列的文章,作者郑彦兴,通过讲解和例子演示了Linux中几种IPC的使用方式,我觉得很好,在这里做一个保留,能看完的话Linux IPC的基础是没有问题的了.一)Linux环境进程间通信(一)管道及有名管道http://www.ibm.com/developerworks/cn/linux/

linux学习之高并发服务器篇(二)

高并发服务器 1.线程池并发服务器 两种模型: 预先创建阻塞于accept多线程,使用互斥锁上锁保护accept(减少了每次创建线程的开销) 预先创建多线程,由主线程调用accept 线程池 3.多路I/O转接服务器 三种模型性能分析 select模型 select用来阻塞监听4,5,6,7是否有数据传入,若7这个文件描述符有数据到达,select返回就绪文件描述符个数,若检测到7有数据接收,accept接收客户链接请求,创建一个新的文件描述符. select (1)select能监听的文件描述

linux学习之八---Linux进程基础知识

一.linux进程 linux是一个多用户多任务的操作系统. 多用户是指多个用户可以在同一时间使用计算机: 多任务是指linux可以同时执行几个任务. 进程简单来说就是运行中的程序,Linux系统的一个重要特点是可以同时启动多个进程.根据操作系统的定义:进程是操作系统资源管理的最小单位. 1.Linux进程的概念 进程是一个动态的实体,是程序一次执行过程,并且进程是操作系统资源分配的基本单位. 进程与程序的区别:进程是动态的,程序是静态的:进程是运行中的程序,而程序还是保存在硬盘上的可执行代码.