signal linux

2023-12-13 03:39:49

Linux下signal介绍与其引用

??在真实的项目中,后台服务程序不受终端控制,常驻内存中,没有互交的界面。但是程序会产生数据
? ?周期性或通过时间唤醒的方式执行任务。
如何让程序在后台运行?
? ?(1)在指令后面+&符号
? ?(2)采用fork()函数,即创建一个进程执行程序。

可靠信号,不可靠信号,阻塞信号以及信号处理函数

??程序在运行过程中,用Ctrl+c、kill中止的本质是向程序发送信号,程序对这两个信号的缺省行为是程序中止运行。在程序中,可以捕获函数,编写信号处理函数,执行代码。

signal(SIGINT,func);//采用键盘终端ctrl+c
signal(SIGTERM,func);//采用kill进程编号通知程序

当然signal函数的第一个参数也可以用信号列表来表示。
意思是如果遇到了ctrl+c就会执行func函数。

信号的基本概念

??软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。
??收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类:第一种是类似中断的处理程序,对于需要处理的信号,进程可以指定处理函数,由该函数来处理。第二种方法是,忽略某个信号,对该信号不做任何处理,就象未发生过一样。第三种方法是,对该信号的处理保留系统的默认值,这种缺省操作,对大部分的信 号的缺省操作是使得进程终止。进程通过系统调用signal来指定进程对某个信号的处理行为。
??在进程表的表项中有一个软中断信号域,该域中每一位对应一个信号,当有信号发送给进程时,对应位置位。由此可以看出,进程对不同的信号可以同时保留,但对于同一个信号,进程并不知道在处理之前来过多少个。

几个重要的信号

SIGKILL 无条件强制杀死进程
SIGINT ?? ctrl+c

信号有什么用?

??signal(SIGINT,func)可以让程序体面的退出。

文章来源:https://blog.csdn.net/misikamikirto/article/details/134883327
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。