Windows 控制台(cmd.exe 或 powershell)在获得焦点时是否发送了 sigint?
我刚刚意识到,当我的 cmd/powershell 窗口重新获得焦点(通过单击)时,会发送一个 sigint。在 powershell 上,这清楚地显示为红色的“^C”;在 cmd 上,可以通过启动 Python 等来检查这一点;获得焦点后,Python 会显示 KeyboardInterrupt(由 Python 的 sigint 处理程序发出)。 是否可以关闭此行为? ...
我刚刚意识到,当我的 cmd/powershell 窗口重新获得焦点(通过单击)时,会发送一个 sigint。在 powershell 上,这清楚地显示为红色的“^C”;在 cmd 上,可以通过启动 Python 等来检查这一点;获得焦点后,Python 会显示 KeyboardInterrupt(由 Python 的 sigint 处理程序发出)。 是否可以关闭此行为? ...
我读了很多答案,他们都只是建议终止脚本或将其发送到后台等。我想要的是 虽然 true 确实 某物... 如果(按下 ctrl+c 则中断) 完成回应“退出循环” 因为按下了 ctrl+c,所以我处于循环之外,所以我可以在这里做其他事情而不必退出脚本...... 而且这个问题不是重复的,因为我搜索了几个小时,没有答案能满足我的要求。那个“Out of the loop”永远不会被打印出来,我尝试了各种答案中的很多例子! 信息:我使用(1)Scientific Linux SL 版本 5.4(Boron),(2)Ubuntu 16.04 ...
我有一个用 C++ 编写的 Linux 应用程序,它捕获 SIGINT 中断以便在退出之前进行一些最后的清理。我在 bash 脚本中调用此应用程序。现在,当我在前台运行 bash 脚本时键入 control-C 时,脚本会终止,它调用的程序也会终止,但不运行最后的清理代码。我怎样才能让中断通过 bash 脚本直接传递到应用程序,从而进行最后的清理,然后正常退出,然后导致脚本本身退出? ...
我认为Ctrl+C有时是必需的,但我不记得我需要它。有时我试图通过自动按下该“热键”来复制输出文本,但却丢失了数据库连接。这非常烦人,我想永远禁用 SIGINT 发送。可以这样做吗? 系统信息:Linux Mint 17 mysql-client-5.5 ...
我在摆弄键盘快捷键时不小心将命令映射到了 Ctrl+C 快捷键。现在我无法使用 Ctrl+C 停止终端中正在运行的程序,而且我不知道如何恢复此功能。 有什么建议么? ...
在下面的一行中,我运行一个“无限”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...
我有一个交互式 C 程序,它从终端读取一个短语,并计算一系列字谜。我还有一个 Perl 程序,它从 STDIN 读取和缓冲行,直到收到保留的“输入结束”标记,对行进行排序,将它们组织成列并将它们发送到 STDOUT。 C 程序使用 BSD/MacOSpopen()通过单个双向管道启动 Perl 程序,并fprintf()在管道上进行 anagrams,直到生成所有 anagrams;发送“输入结束”标记,然后getline()在管道上发出 来读回并打印格式化结果。 正常情况下工作正常。但我向 C 程序添加了一个 SIGINT 处理程序,这样我就可以中断长时间...
我知道推荐的方法终止前台进程是通过SIGTERM信号进行的,因为它为进程本身提供了清理/释放资源的机会。该信号只能通过命令生成/发送,可以通过任何命令生成/发送kill pkill killall- 直到这里我都可以。此外,它是默认这些命令的信号。 现在我知道SIGINT信号了中断一个过程。因此“相似”为终止。 但我读到了以下答案(摘录): SIGINT 与其他终止信号(例如 SIGTERM、SIGQUIT 和 SIGKILL)有何关系? SIGINT并SIGQUIT旨在具体来说为了来自终端的请求:可以指定特定的输入字符来生成这些信号(取决于终端控制设...
当我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="...
我有一个忽略 SIGINT 的程序,但我想在前台运行。我想找到一种方法来强制它在 Ctrl-C 上关闭。有没有什么方法可以编写一个包装器(您可以调用它./wrapper.sh my_program)来强制行为不当的程序退出,可能是通过检测被忽略的 SIGINT 并生成 SIGKILL ? 这个答案与我正在寻找的完全相反——我想强制一个忽略信号的程序在 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 但这并不能阻止我的命令。 ...
我正在努力解决在特定环境 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 不起作用? 看来这是一件简单的事情,...
通过 dmenu 运行 Jetbrains IDE(例如 PyCharm 和 Android Studio)时,我收到以下警告: IDE 忽略 SIGINT:运行配置中的“停止”按钮可能不起作用。 然后它链接这个支持页面其中说 ...用户可以更改 IDE 的启动方式,以便信号不被阻塞(例如从终端而不是 dmenu 运行)` 为什么 dmenu 会导致这种行为?有可用的设置或解决方法吗? 经过一些测试以确定潜在的解决方法后,我发现我可以pycharm&在终端中运行并关闭终端,而不会出现问题或警告。但是,如果我制作一个脚本r...
我有一个 perl 脚本,它间接调用mysql(执行长 SQL 脚本)。我想在该脚本运行时禁用Ctrl+ C,但不知何故信号仍然到达mysql,然后显示“Ctrl-C - 查询已终止。正常继续。” (我相信这是来自mysql) 我有: 将其设置$SIG{INT}为“IGNORE”——事实上,Perl 脚本会继续运行 在 Perl 脚本上设置一个进程组——实际上,ps -e -o uid,pid,ppid,pgid,command显示它mysql与我的 Perl 脚本位于同一进程组中 mysql在这两者发生后调用。 为什么该信号仍然会到达进程mysq...