sigint

Bash 中的 SIGINT 行为
sigint

Bash 中的 SIGINT 行为

我正在运行这个 Bash 脚本: #!/bin/bash for i in $(seq 1 100); do echo $i sleep 1 done 当我发出时kill -INT <pid>什么也没有发生——脚本继续运行。如果我发出kill -TERM <pid>,脚本和 sleep 命令都会被终止。<pid>这里指的是脚本的 PID,而不是进程sleep。 我想了解这里信号处理的区别。我知道发出Ctrl+C将实现与发送相同的结果,-TERM因为信号被发送到进程组,但我不太明白为什么发出的-INT行为...

Admin

Windows 控制台(cmd.exe 或 powershell)在获得焦点时是否发送了 sigint?
sigint

Windows 控制台(cmd.exe 或 powershell)在获得焦点时是否发送了 sigint?

我刚刚意识到,当我的 cmd/powershell 窗口重新获得焦点(通过单击)时,会发送一个 sigint。在 powershell 上,这清楚地显示为红色的“^C”;在 cmd 上,可以通过启动 Python 等来检查这一点;获得焦点后,Python 会显示 KeyboardInterrupt(由 Python 的 sigint 处理程序发出)。 是否可以关闭此行为? ...

Admin

Ctrl+C 打破无限循环,然后在 Bash 脚本中在循环外执行某些操作而不退出?
sigint

Ctrl+C 打破无限循环,然后在 Bash 脚本中在循环外执行某些操作而不退出?

我读了很多答案,他们都只是建议终止脚本或将其发送到后台等。我想要的是 虽然 true 确实 某物... 如果(按下 ctrl+c 则中断) 完成回应“退出循环” 因为按下了 ctrl+c,所以我处于循环之外,所以我可以在这里做其他事情而不必退出脚本...... 而且这个问题不是重复的,因为我搜索了几个小时,没有答案能满足我的要求。那个“Out of the loop”永远不会被打印出来,我尝试了各种答案中的很多例子! 信息:我使用(1)Scientific Linux SL 版本 5.4(Boron),(2)Ubuntu 16.04 ...

Admin

通过 bash 脚本将 SIGINT 传递给应用程序
sigint

通过 bash 脚本将 SIGINT 传递给应用程序

我有一个用 C++ 编写的 Linux 应用程序,它捕获 SIGINT 中断以便在退出之前进行一些最后的清理。我在 bash 脚本中调用此应用程序。现在,当我在前台运行 bash 脚本时键入 control-C 时,脚本会终止,它调用的程序也会终止,但不运行最后的清理代码。我怎样才能让中断通过 bash 脚本直接传递到应用程序,从而进行最后的清理,然后正常退出,然后导致脚本本身退出? ...

Admin

Linux。MySQL 命令行客户端。永久设置“--sigint-ignore”选项
sigint

Linux。MySQL 命令行客户端。永久设置“--sigint-ignore”选项

我认为Ctrl+C有时是必需的,但我不记得我需要它。有时我试图通过自动按下该“热键”来复制输出文本,但却丢失了数据库连接。这非常烦人,我想永远禁用 SIGINT 发送。可以这样做吗? 系统信息:Linux Mint 17 mysql-client-5.5 ...

Admin

Ubuntu Linux 10.04 LTS 中的 Ctrl+C 映射不正确
sigint

Ubuntu Linux 10.04 LTS 中的 Ctrl+C 映射不正确

我在摆弄键盘快捷键时不小心将命令映射到了 Ctrl+C 快捷键。现在我无法使用 Ctrl+C 停止终端中正在运行的程序,而且我不知道如何恢复此功能。 有什么建议么? ...

Admin

期望:修改 Ctrl-C 行为
sigint

期望:修改 Ctrl-C 行为

当 exec 正在运行程序时,我希望使用 Ctrl-C 终止程序并恢复脚本,而不是终止脚本。实现此目的的最佳方法是什么? ...

Admin

在 bash 单行代码中使用 Ctrl-C 中断 while 循环后运行命令?
sigint

在 bash 单行代码中使用 Ctrl-C 中断 while 循环后运行命令?

在下面的一行中,我运行一个“无限”while 循环来打印一些数字: $ bash -c 'trap stopit SIGINT; run=1; stopit() { run=0; }; while [ $run ]; do for i in {0..4}; do v=$(($i*50)); d=$(for ((k=0;k<=(5+$i);k++)); do echo -n $(($v*(($k+$i)%2))),; done); d=${d%?}; c=$(echo numbers $d); echo $c; sleep 0.1; done; done...

Admin

已处理的 SIGINT 是否会影响与子进程的管道通信?
sigint

已处理的 SIGINT 是否会影响与子进程的管道通信?

我有一个交互式 C 程序,它从终端读取一个短语,并计算一系列字谜。我还有一个 Perl 程序,它从 STDIN 读取和缓冲行,直到收到保留的“输入结束”标记,对行进行排序,将它们组织成列并将它们发送到 STDOUT。 C 程序使用 BSD/MacOSpopen()通过单个双向管道启动 Perl 程序,并fprintf()在管道上进行 anagrams,直到生成所有 anagrams;发送“输入结束”标记,然后getline()在管道上发出 来读回并打印格式化结果。 正常情况下工作正常。但我向 C 程序添加了一个 SIGINT 处理程序,这样我就可以中断长时间...

Admin

何时强制以编程方式发送 SIGINT?
sigint

何时强制以编程方式发送 SIGINT?

我知道推荐的方法终止前台进程是通过SIGTERM信号进行的,因为它为进程本身提供了清理/释放资源的机会。该信号只能通过命令生成/发送,可以通过任何命令生成/发送kill pkill killall- 直到这里我都可以。此外,它是默认这些命令的信号。 现在我知道SIGINT信号了中断一个过程。因此“相似”为终止。 但我读到了以下答案(摘录): SIGINT 与其他终止信号(例如 SIGTERM、SIGQUIT 和 SIGKILL)有何关系? SIGINT并SIGQUIT旨在具体来说为了来自终端的请求:可以指定特定的输入字符来生成这些信号(取决于终端控制设...

Admin

为什么 sleep 在 shell 脚本中运行时会忽略 SIGINT?
sigint

为什么 sleep 在 shell 脚本中运行时会忽略 SIGINT?

当我sleep手动运行然后kill -INT它时,睡眠立即退出。例如: $ /bin/sleep 60 & [1] 4002356 $ kill -INT 4002356 [1]+ Interrupt /bin/sleep 60 $ ps -C sleep PID TTY TIME CMD $ 但是,当我在 shell 脚本中执行相同的操作时,sleep会忽略SIGINT.例如: set -o xtrace echo /bin/sleep 10 & child="...

Admin

是否可以强制忽略信号的程序在 ctrl-C 上退出?
sigint

是否可以强制忽略信号的程序在 ctrl-C 上退出?

我有一个忽略 SIGINT 的程序,但我想在前台运行。我想找到一种方法来强制它在 Ctrl-C 上关闭。有没有什么方法可以编写一个包装器(您可以调用它./wrapper.sh my_program)来强制行为不当的程序退出,可能是通过检测被忽略的 SIGINT 并生成 SIGKILL ? 这个答案与我正在寻找的完全相反——我想强制一个忽略信号的程序在 SIGINT 上退出。 ...

Admin

向 bash 脚本内启动的命令发送 SIGINT
sigint

向 bash 脚本内启动的命令发送 SIGINT

我正在执行一个 bash 脚本,我想正确终止我在脚本中启动的命令(按 CTRL+C)。这是脚本: trap ctrl_c SIGINT function ctrl_c() { PID = $! kill -s SIGINT -$PID wait $PID echo "mycommand stopped!" } mycommand directory -option | grep --line-buffered -A 'Hello|Bye' >> output 但这并不能阻止我的命令。 ...

Admin

当 CTRL-C 不起作用时如何使其在命令行中起作用?
sigint

当 CTRL-C 不起作用时如何使其在命令行中起作用?

我正在努力解决在特定环境 shell 命令行(CentOS 7 / Windows 主机的 Vagrant 来宾)中无法使用 CTRL+C 的问题。我在那里使用 bash。操作系统似乎并不重要。 运行示例sleep 1000并按 ctrl-c: $ sleep 1000 ^C^C^C 所以,只要输入 ^C 就可以了。 ^C必然会发生中断。 $ stty -a intr = ^C; ... 如何制作这行得通? 在下面的帖子中,我受到启发去修复它,答案解释了很多,但没有给出如何使其工作的简单答案。 为什么 Ctrl-C 不起作用? 看来这是一件简单的事情,...

Admin