题
这个评论让我很困惑:“kill -l 通常列出所有信号”。我认为信号意味着量化的能量。
[添加] 请澄清 Unix 中的(计算)信号和物理信号。它们是完全不同的概念吗?
[添加] 范式之间是否存在重大差异?C、Python、Haskell 等语言中的含义相同吗?信号似乎是一个通用术语。
其他提示
在手册是指一个非常基本的机制,其允许处理或操作系统通过发送信号,以通知其他进程。操作系统可以使用它来通知关于它们的(信号SIGABRT
)或约段故障(通常通过访问空指针,SIGSEGV
引起)的堕胎方案,仅举两个。
某些UNIX服务器使用的信号,以便管理员可以使用kill
向他们发送的信号,从而使他们重新读取它们的配置文件,而不需要他们重新启动。
有采取一些信号和其它信号的默认动作只是忽略。例如上收到SIGSEGV
的,程序将终止,而在没有什么特别的接收SIGCHLD
,这意味着儿童死亡的过程,会在默认情况下的结果。
有是安装一个信号处理程序,它是一个可以接收的信号,称为signal
(在man signal
读取)时执行一些代码的功能的ANSI C标准功能。在不同的Unix的,该函数的行为不同,因此它的用法是气馁。它的手册页是指sigaction
功能(读man sigaction
),其行为一致,也更强大。
一个物理信号和Unix的信号确实是不同的概念。当一个Unix信号从一个过程发送到另一个,有相应的物理信号没有特定。 Unix的信号仅仅抽象所以程序员可以谈论彼此通信过程。
Unix的信号可能已被称为消息,事件,通知,或甚至一个虚构的术语如“frobs”。设计者只是选择了名称为“信号”,它卡住。
信号的消息,到目标的过程中,或操作系统有关的目标的过程。它是一部分的unix API(并且被定义于各种POSIX标准)。
阅读 man kill
, man signal
, , man sigaction
.
其他这样的问题,可能是有帮助:
一些从我的笔记:
允许异步通信
- 进程之间的属于 同一用户
- 从该系统的任何过程
- 从系统管理者的任何过程
- 所有相关信息在本身的信号
- 许多不同的信号
信号情报
- 从该系统对所有进程 关于终端
- 触发:^C压
- 通常方式停止运行中的进程
SIGFPE
- 从核对单个过程
- 触发:错误的浮点运算
SIGKILL
- 到一个单一的进程
- 停止执行的目标过程
SIGALRM
- 从核对单个过程
- 触发:计时器到期
SIGTERM
- 到一个单一的进程
- 建议的过程终止优雅
SIGUSR1,SIGUSR2
- 从任何进程的任何其他
- 没有一个预先定义的语义
- 可自由使用的通过程序员
信号发送到另一个进程
- int杀(pid,signal_ID)
程序员可以决定做什么,当一个信号 收到
- 使用默认的行为
- 忽略它
- 执行一个用户功能
检测中断的写信
if (write(fd, buff, SIZE)<0) {
switch (errno) {
case EINTR:
warning(“Interrupted write\n”);
break;
}
}…
一个信号是可以被发送到正在运行的进程的消息。
例如,告诉因特网守护进程(inetd的),以重新读取其配置文件,它应当发送一个SIGHUP信号。
例如,如果当前的进程ID(PID)的inetd的是1234,应键入: 杀-SIGHUP 1234
信号是“在计算过程之间传输的事件、消息或数据结构”(来自 维基百科).
在这种情况下,信号装置“消息”。所以它发送消息给一个过程,可以告诉的过程中做各种事情。
一个UNIX信号是一个样的信息可以被发送到和从UNIX进程。他们可以做这样的事情告诉进程退出(SIGKILL),或者一个进程有一个无效的内存引用(SIGSEGV),或者整个过程由用户按control-C(SIGINT)杀死。
这* nix中的命令行输入:
人信号
这是必应你所有可用的信号。
信号基本上是一个中断,告诉过程某一特定事件的发生。
信号通常发送的核心,同时一个过程还可以发送信号的其他进程(取决于许可答复所有)通过使用杀和killall命令和进程可能发送信号本身通过使用提高。
主要使用信号:
要处理的中断。
进程同步。
信号中断,用于亲密的一个过程,一个特定的事件已发生了。
信号可以通过发送的内核运行的进程或者一个过程的另一个进程。
在庆典杀和killall命令可用于发送的信号。