文档章节

linux信号浅谈

 天下杰论
发布于 2013/04/22 15:46
字数 523
阅读 41
收藏 0
当一个进程正在执行一个系统调用时,如果向该进程发送一个信号,那么对于大多数
系统调用来说,这个信号在系统调用完成之前将不起作用,因为这些系统调用不能被信号
打断。但是有少数几个系统调用能被信号打断,例如:wait(),pause()以及对慢速设备(终端、
打印机等)的 read()、write()、open()等。如果一个系统调用被打断,它就返回-1,并将 errno

设为 EINTR。

在 Linux 中,当一个信号的信号处理函数执行时,如果进程又接收到了该信号,该信
号会自动被储存而不会中断信号处理函数的执行,直到信号处理函数执行完毕再重新调用
相应的处理函数。但是如果在信号处理函数执行时进程收到了其它类型的信号,该函数的执行就会被中
断。

而且如果两个信号同时产生,系统并不保证进程接收它们的次序。以上的两个缺点影
响了信号作为进程通信手段的可靠性,因为一个进程不能保证它发出的信号不被丢失。
当某个信号未被处理的时候,如果对该信号执行 signal 调用,那么该信号将被注销。

一个进程通过对 signal()的调用来处理其它进程发送来的信号。同时,一个进程也可以
向其它的进程发送信号。这一操作是由系统调用 kill()来完成的。

需要说明的是,一个进程并不是向任何进程均能发送信号的,这里有一个限制,就是
普通用户的进程只能向具有与其相同的用户标识符的进程发送信号。也就是说,一个用户
的进程不能向另一个用户的进程发送信号。只有 root 用户的进程能够给任何线程发送信号。

© 著作权归作者所有

共有 人打赏支持
粉丝 54
博文 443
码字总数 23611
作品 0
沈阳
项目经理
私信 提问
浅谈 linux 多线程编程和 windows 多线程编程的异同

很早以前就想写写linux下多线程编程和windows下的多线程编程了,但是每当写时又不知道从哪个地方写起,怎样把自己知道的东西都写出来,下面我就谈谈linux多线程及线程同步,并将它和windows...

红薯
2011/03/24
4.7K
1
posix_kill 进程参数详解

http://blog.chinaunix.net/uid-24485075-id-3292539.html 定义的SIGKILL信号和SIGSTOP信号,因为它们为超级用户提供了一种使进程终止或停止的可靠方法。 Linux的信号机制基本上是继承UNIX的...

蜗牛奔跑
2017/10/20
0
0
linux内核线程对信号的处理过程

linux中的线程分为用户线程和内核线程,用户线程是标准的线程,完全的自主性,完全的抢占性;但是内核线程就不那么好了,某种意义上没有用户线程那么清闲,这个怎么理解呢?用户线程的编写者...

晨曦之光
2012/04/10
938
0
Linux 进程间通信之使用信号

Linux 进程之间可以相互发送信号,来发送一些通知,信号可以携带数据(4个字节) ,具体看 sigqueue 函数。 如果要使用自定义的信号来发送数据的话,普通信号只预留了两个信号 USER1 USER2 ...

sincoder
2014/12/02
0
0
内核同步机制之Mutex Exclusion

S3C2440在内核版本2.6.34下开发ADC驱动时,会发现驱动程序里用了互斥通信来实现同步: 在wikipedia中式这么定义Mutex Exclusion的: In computer science, mutual exclusion refers to the ...

兔之
2014/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
21分钟前
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
21分钟前
1
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
21分钟前
1
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
21分钟前
1
0
java框架学习日志-3

这章主要是补充一些ioc创建对象的方式,ioc容器在写好<bean></bean>的时候就已经创建对象了。在之前的例子中,一直都是无参的构造方法。下面给出有参的构造方法的对象的创建,没有什么难点重...

白话
24分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部