linux信号

Linux信号使用及自定义信号

点点圈 提交于 2019-12-01 22:21:34
linux自定义信号: https://www.cnblogs.com/bigben0123/p/3186661.html linux信号、值及解释: https://blog.csdn.net/luotuo44/article/details/16799607 信号处理: https://wiki.jikexueyuan.com/project/cplusplus/signal-handling.html 没什么kill -l没有32 33 http://www.kbase101.com/question/30858.html __SIGRTMIN 和 SIGRTMIN: 两个是不同的,SIGRTMIN在 __SIGRTMIN 基础上+2 执行 kill -l 会列出了下信号 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23)

linux进程管理

和自甴很熟 提交于 2019-11-30 21:56:19
1.进程的组成 一个进程包含内核中的一部分地址空间和一系列数据结构。其中地址空间是内核标记的一部分内存以供进程使用,而数据结构则用来纪录每个进程的具体信息。 最主要的进程信息包括: 进程的地址空间图 进程当前的状态( sleeping、stopped、runnable 等) 进程的执行优先级 进程调用的资源信息 进程打开的文件和网络端口信息 进程的信号掩码(指明哪种信号被屏蔽) 进程的属主 PID:进程ID 每一个进程都会从内核获取一个唯一的ID值。绝大多数用来操做京城的命令和系统调用,都需要PID 指定操作的进程对象。 PPID:父进程ID 在unix和linux系统中,一个已经存在的进程必须克隆它自身来创建一个新的进程。当新的进程克隆后,最初的进程便作为父进程存在。 UID&EUID:真实用户ID和有效用户ID 一个进程的 UID 是其创建者的身份标志(也是对其父进程 UID 的复制)。通常只有进程的创建者和超级用户才有操作该进程的权限。 Niceness 一个进程的计划优先级决定了它能获取到的 CPU 时间。内核有一个动态的算法来计算优先级,同时也会关注一个 Niceness 值,来决定程序运行的优先顺序。 二.信号 信号属于进程级别的中断请求。它们可以作为进程间通信的手段,或者由终端发送以杀死,中断,挂起某个进程。 三。kill命令 kill命令常用来终止某个进程

Linux nohup和&的功效

a 夏天 提交于 2019-11-30 12:51:16
nohup和&究竟有啥区别?不少同学进行了回复,但并不是所有同学都理解得全对,今天把自己挖的坑自己填了。 测试代码如下: 是一个输出hello与循环轮数的死循环程序,每输出一行就休眠1秒。 使用 ./a.out 前台运行程序,会是什么效果呢? 程序每隔一秒会在终端输出一个字符串。 此时如果键入Ctrl+C ,程序会收到一个SIGINT信号,如果不做特殊处理,程序的默认行为是终止(如上图)。 使用 ./a.out& 后台运行程序,会是什么效果呢? 如上图: 首先会在终端显示进程号是32389 键入Ctrl + C,发出SIGINT信号,程序会继续运行 ps确认一下,确认进程依然在运行,进程号是32389。 此时如果关掉session,程序会收到一个SIGHUP信号,此时会怎么样呢? ps再次确认,可以看到关闭session之后,进程号是32389的a.out进程也关闭了。 使用nohup ./a.out 又会是什么效果呢? 使用nohup 运行程序a.out,会发现: 前台没有出现进程号 有一个“忽略输入,输出至nohup.out”的提示 hello的输出也没有出现在前台 手动ps看进程号,这次a.out的进程号是32437。 此时如果关掉session,程序会收到一个SIGHUP信号,程序会不会关闭呢? 关掉session后,再次ps看一下,ID为32437的a.out进程还在。

linux各种IPC机制

≯℡__Kan透↙ 提交于 2019-11-29 11:06:08
linux各种IPC机制   docker中的资源隔离,一种就是IPC的隔离。IPC是进程间通信。 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原帖发表在IBM的developerworks网站上,是一个系列的文章,作者郑彦兴,通过讲解和例子演示了Linux中几种IPC的使用方式,我觉得很好,在这里做一个保留,能看完的话Linux IPC的基础是没有问题的了。 一)Linux环境进程间通信(一)管道及有名管道 http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/ 二)Linux环境进程间通信(二): 信号 上: http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 下: http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html 三)Linux环境进程间通信(三)消息队列 http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/ 四)Linux环境进程间通信(四)信号灯 http://www.ibm.com/developerworks

linux下信号使用

☆樱花仙子☆ 提交于 2019-11-28 16:19:09
信号singal: 信号是一种软中断,在程序中每个信号用一个整数表示,为了记忆每个信号都有一个宏定义。 SIGKILL 9 进程终止信号 SIGSTOP 进程停止信号 SIGCONT 进程继续执行信号 SIGINT Ctrl+C发出信号,默认终止进程 SIGQUIT Ctrl+\发出信号,默认终止进程并产生Core文件 SIGTSTP Ctrl+Z发出信号,默认停止进程 SIGCHLD 子进程结束信号,默认忽略 SIGALRM 闹钟信号,闹钟定时时间到发出的信号,默认终止进程 自己处理信号: typedef void (*sighandler_t)(int); //信号处理函数指针,入参是当前处理信号值 sighandler_t signal(int signum, sighandler_t handler); //使用signal登记信号处理函数,返回原来的信号处理函数指针 signal(信号,SIG_IGN) //忽略信号 signal(信号,SIG_DFL) //恢复默认信号,返回SIG_ERR表示出错 自己处理的信号只能是可以捕获的信号,SIGKILL和SIGSTOP无法捕获。 kill -信号 进程id //用于发送指定信号到指定进程。 int kill(pid_t pid, int sig); //如果pid=0表示向本组的所有进程发送信号,如果sig=0不发信号

Linux--信号阻塞与屏蔽

£可爱£侵袭症+ 提交于 2019-11-28 13:28:29
from: https://www.cnblogs.com/kex1n/p/8296623.html 1. sigprocmask函数提供屏蔽和解除屏蔽信号的功能。 从而实现关键代码的运行不被打断。 函数声明如下: int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); 其中参数 how可设置的参数为:SIG_BLOCK, SIG_UNBLOCK,SIG_SETMASK SIG_BLOCK: 按照参数 set 提供的屏蔽字,屏蔽信号。并将原信号屏蔽保存到oldset中。 SIG_UNBLOCK: 按照参数 set 提供的屏蔽字进行信号的解除屏蔽。针对Set中的信号进行解屏。 SIG_SETMASK: 按照参数 set 提供的信号设置重新设置系统信号设置。 2. 信号屏蔽与解屏常见实现 方法一: SIG_BLOCK, SIG_UNBLOCK成对实现 优点oldset可以不管。 方法二: SIG_BLOCK设置屏蔽,保存原有信号设置。 SIG_SETMASK重新恢复原有设置。 3. 屏蔽过程中接受到的信号如何处理 在信号屏蔽过程中,出现的所有被屏蔽的信号,不管发生多少次,在信号解除屏蔽后,系统会执行一次被屏蔽信号上的操作。 来源: https://www.cnblogs.com/aspirs/p/11408959

Linux信号(signal) 机制分析

一个人想着一个人 提交于 2019-11-28 13:02:24
from: https://www.cnblogs.com/subo_peng/p/5325326.html 【摘要】本文分析了Linux内核对于信号的实现机制和应用层 的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行 及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 【关键字】软中断信号,signal,sigaction,kill,sigqueue,settimer,sigmask,sigprocmask,sigset_t 1 信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。 收到信号的进程对各种信号有不同的处理方法。处理方法可以分为三类: 第一种是类似中断的处理程序,对于需要处理的信号

Linux进程管理-企业案例

只愿长相守 提交于 2019-11-28 08:33:35
1.管理进程状态 当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号。当然除了kill、还有killall,pkill 1.使用kill -l列出当前系统所支持的信号 我们最为常用的3个信号 数字编号 信号含义 信号翻译 1 SIGHUP 通常用来重新加载配置文件 9 SIGKILL 强制杀死进程 15 SIGTERM 终止进程,默认kill使用该信号 2.使用kill命令杀死指定PID的进程 1.给 vsftpd 进程发送信号 1,15 [root@chengyinwu ~]# yum -y install vsftpd [root@chengyinwu ~]# systemctl start vsftpd [root@chengyinwu ~]# ps aux |grep vsftpd root 8185 0.0 0.0 53276 572 ? Ss 15:55 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 8425 0.0 0.0 112708 988 pts/0 R<+ 15:56 0:00 grep --color=auto vsftpd 2.发送重载信号,例如 vsftpd 的配置文件发生改变,希望重新加载 [root@chengyinwu ~]#

linux信号(signal)

扶醉桌前 提交于 2019-11-28 08:10:40
一、signal本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟。 二、signal各种类型 处理动作一项中的字母含义如下 A 缺省的动作是终止进程 B 缺省的动作是忽略此信号 C 缺省的动作是终止进程并进行内核映像转储(dump core) D 缺省的动作是停止进程 E 信号不能被捕获 F 信号不能被忽略 POSIX.1中列出的信号: 信号 值 处理动作 发出信号的原因 ---------------------------------------------------------------------- SIGHUP 1 A 终端挂起或者控制进程终止 SIGINT 2 A 键盘中断(如break键被按下) SIGQUIT 3 C 键盘的退出键被按下 SIGILL 4 C 非法指令 SIGABRT 6 C 由abort(3)发出的退出指令 SIGFPE 8 C 浮点异常 SIGKILL 9 AEF Kill信号 SIGSEGV 11 C 无效的内存引用 SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道 SIGALRM 14 A 由alarm(2)发出的信号 SIGTERM 15 A 终止信号 SIGUSR1 30,10,16 A 用户自定义信号1 SIGUSR2 31,12,17 A 用户自定义信号2

Linux基础命令:kill

痴心易碎 提交于 2019-11-28 01:29:01
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。 1.命令格式: kill[参数][进程号] 2.命令功能: 发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。 3.命令参数: -l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称 -a 当处理当前进程时,不限制命令名和进程号的对应关系 -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号 -s 指定发送信号 -u 指定用户 注意: 1、kill命令可以带信号号码选项