Articles of 信号

什么键盘信号除了Ctrl-C可以捕捉?

我有一个(C,Linux)应用程序,通过closures来处理Ctrl-C SIGINT。 我想添加另一个信号处理程序,以便我可以使用另一个按键组合“运行时重新加载configuration”。 所以我正在寻找一个信号,我可以通过按键发送到前台进程,这不会强制进程退出或暂停。 还有别的吗?

非阻塞信号传输需要多长时间?

当一个进程向另一个进程发送信号时,接收进程在什么情况下等待,直到它被重新安排运行? 在什么情况下安装的信号处理程序立即被调用? 提升信号的过程会产生多less开销,而不是直接调用相应的信号处理程序?

信号SIGFPE问题

我是Linux新手,请帮忙。 以下代码在Linux 2.6 gcc中运行时获得核心转储。 $ ./a.out 浮点exception(核心转储) 问题: 1.由于安装了过程信号掩码,因此不应该禁止第40行(z = x / y)生成的“SIGFPGE” 2.如果未被阻止,由于已经安装了一个信号处理程序,不应该由信号处理程序捕获“SIGFPE”,而不是核心转储? 3.如果我将第40行(z = x / y)注释掉,并使用第42行(raise(SIGFPE)),那么所有事情都按我的预期工作。 这里有什么区别x / 0和提高SIGFPE? 这里是代码: #include <stdio.h> #include <stdlib.h> #include <signal.h> void sig_handler(int signum) { printf("sig_handler() received signal %d\n", signum); } int main(int argc, char * argv[]) { // setup signal mask, block all signals sigset_t set; […]

发送信号到后台进程

我应该将哪个信号发送到后台进程以将其移至前台? SIGTTIN,SIGTOU还是…?

C ++,linux,fork,execvp,waitpid和SIGTSP

我正在实施一个家庭工作terminal。 我差不多完成了,我只需要实现一个bg(Background)和一个fg(Foreground)命令。 我的代码如下所示: void run(){ string command[] = parseMyInput( getInput() ); int fork_result = fork(); if( -1 == fork_result ) //handle error else if( 0 == fork_result ){ // child setpgrp(); // I don't want the children to get the signals if( -1 == execvp( command[0], makeArgs(command) ) ) //handle error } else { // […]

在Linux中使用Signal发送信息

当从一个进程发送信号到另一个进程时,我也想发送一个longtypes的值。 那可能吗? 我正在使用SIGUSR1。

为什么shell在后台进程中忽略SIGINT和SIGQUIT?

如果我在脚本或-c片段中背景进程,后台进程将忽略SIGINT和SIGQUIT: 例: $ alias ps='ps -o pid,ppid,pgrp,sid,stat,tty,ignored,blocked,caught,wchan,min_flt,pmem,args –forest' $ sh -c 'sleep 1000 & sleep 1000 | sleep 1000' & \ sleep 0.01; ps |grep -v -e ps -e grep PID PPID PGRP SID STAT TT IGNORED BLOCKED CAUGHT WCHAN MINFL %MEM COMMAND 6197 2143 6197 6197 Ss pts/28 0000000000380004 0000000000010000 000000004b817efb wait 10039 0.0 […]

从键盘发送SIGINT到bash中的pipe道命令

如果在bash中运行a | b | c | d a | b | c | d a | b | c | d在命令行上,然后按^ C ,哪个进程得到信号?

如何避免由于Linux中的信号而中断睡眠呼叫

我在Linux中使用实时信号来通知串口中新数据的到达。 不幸的是,当有信号时,会导致睡眠呼叫中断。 有没有人知道一种方法来避免这种行为。 编辑:我试过使用一个常规的信号(SIGUSR1),但我一直得到相同的行为。 谢谢Joao

HUP什么时候停止发送,我该怎么办?

早在我年轻的时候,Unix就是新事物,创build一个在注销时不会被杀的进程是一个挑战。 我们使用nohup命令来保护HUP信号中的持续进程。 如果我们不小心,当我们注销时,我们的进程就会被杀死,甚至closures我们启动它们的shell。 快进到今天,我发现我很惊讶,默认情况恰恰相反。 在Ubuntu和Red Hat系统上,我发现我几乎可以在后台放置任何进程,杀死父shell,注销,任何事情,只是继续下去。 我看到与Bash脚本,Python脚本和C程序相同的行为。 我从xterm或ssh会话中获得相同的行为。 例如,在xterm或ssh窗口中input: while [ 1 ]; do date; sleep 10; done > /tmp/out & 现在从另一个窗口运行 tail -f /tmp/out 看它每10秒打印一次date,然后用Ctrl-Dclosures原来的父shell。 仍在运行。 注销并返回。仍在运行。 发送一个HUP信号,它立即死亡。 我可以展示与Python脚本或C程序相同的行为。 睡或不要紧。 例如,这个丑陋的C程序行为相同: #include <stdio.h> void main() { while(1) { printf("*\n"); fflush(stdout); int i, j, k = 0; for(i=0; i < 10000; i++) { for(j=0; j […]