Linux进程间通信(三)信号
来源:互联网 发布:mac加速的视频播放器 编辑:程序博客网 时间:2024/05/29 02:08
IPC操作时IPC_CREAT和IPC_EXCL选项的说明
IPC(包括消息队列,共享内存,信号量)的xxxget()创建操作时,可以指定IPC_CREAT和IPC_EXCL选项。
以共享内存为例:
当只有IPC_CREAT选项打开时,不管是否已存在该块共享内存,则都返回该共享内存的ID,若不存在则创建共享内存
当只有IPC_EXCL选项打开时,不管有没有该快共享内存,shmget()都返回-1
所以当IPC_CREAT | IPC_EXCL时, 如果没有该块共享内存,则创建,并返回共享内存ID。若已有该块共享内存,则返回-1;(转自:水无声风无痕 的博客)
下面是几种常见的信号:
SIGHUP: 从终端上发出的结束信号
SIGINT: 来自键盘的中断信号(Ctrl-C)
SIGKILL:该信号结束接收信号的进程
SIGTERM:kill 命令发出的信号
SIGCHLD:标识子进程停止或结束的信号
SIGSTOP:来自键盘(Ctrl-Z)或调试程序的停止执行信号
忽略此信号
大多数信号都按照这种方式进行处理,但有两种信号
决不能被忽略,它们是:SIGKILL\SIGSTOP。
这两种信号不能被忽略的原因是:
它们向超级用户提供了一种终止或停止进程的方法
信号的来源可以有很多种试,按照产生条件的不同可以分为硬件和软件两种。
1、 硬件方式
当用户在终端上按下某键时,将产生信号。如按下组合键后将产生一个SIGINT信号。
硬件异常产生信号:除数据、无效的存储访问等。这些事件通常由硬件(如:CPU)检测到,并将其通知给Linux操作系统内核,然后内核生成相应的信号,并把信号发送给该事件发生时正在进行的程序。
2、 软件方式
用户在终端下调用kill命令向进程发送任务信号。
进程调用kill或sigqueue函数发送信号。
当检测到某种软件条件已经具备时发出信号,如由alarm或settimer设置的定时器超时时将生成SIGALRM信号。
- linux进程间通信(三)-------信号
- Linux进程间通信(三)信号
- Linux进程通信(三)IPC信号
- 进程间通信—信号(三)
- 进程间通信(三)信号
- Linux 下进程间通信机制(三) 信号Signal
- Linux进程间通信三之信号与处理
- Linux编程基础之进程间通信之三:信号
- Linux 进程间通信 信号
- linux进程间通信--信号
- Linux进程间通信--信号
- Linux进程间通信 -- 信号
- Linux进程间通信-信号
- Linux进程间信号通信
- 三.Linux环境进程间通信(二):信号(下)
- Linux 进程间通信 --- 信号通信 --- signal
- linux进程间通信-信号通信
- linux进程间通信-信号通信
- 进程通信程序整理---管道(Linux)
- python决策树-1
- 落谷 P1231 教辅的组成
- 1070. 结绳(25)
- 作用域、上下文、闭包、原型、继承
- Linux进程间通信(三)信号
- ubuntu 安装postgresql
- 678. Valid Parenthesis String
- Spring入门笔记一
- 基于ZooKeeper的分布式锁和队列
- JAVA与PHP之间进行aes加密解密
- cocos2d 加载 plist文件(帧动画)
- HistCite使用说明
- Windows程序设计:边框绘制函数