bash - echo 控制 C 字符

标签 bash

我需要 grep 第三方程序的输出。该程序会转储数据,但不会在不按 ^c 终止它的情况下终止。

我目前正在使用它的 pid 搜索并杀死它。但是,我想知道是否可以回显控制 C 字符。伪代码看起来像

echo ^c | ./program_that_does_not_terminate

我可以在 DOS 中做这样的事情,所以在 linux 中一定有办法。

C:\>echo y | del C:\tmp\*
C:\tmp\*, Are you sure (Y/N)? y
C:\>

最佳答案

不,通过管道将 CTRL-C 字符输入您的进程是行不通的,因为 CTRL-C 击键会被终端捕获并转换为发送到进程的终止信号。

CTRL-C 的正确字符代码(在 ASCII 中)是代码编号 3,但是,如果您将其回显到您的程序中,它只会从其标准输入中接收字符。它不会导致进程终止。

如果你想简化查找和终止进程的任务,你可以使用类似的东西:

./program_that_does_not_terminate &
pid=$!
sleep 20
kill ${pid}

$! 将为您提供上次启动的后台进程的进程 ID。

关于bash - echo 控制 C 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6196321/

相关文章:

bash - 使用 sed 将所有反斜杠替换为正斜杠

bash - Windows 10 - Bash (Ubuntu) SU(根密码)

bash - 如何以管理员身份运行 Git Bash(始终)

在 bash 脚本中使用时拒绝访问 mysqldump

bash顺序执行时间线

bash - 拖尾滚动文件

c - 如何去除 "bash"中对 "C"有特殊意义的字符串中的标点符号

Bash shell 脚本 : how do I exit and restart the script?

linux - Bash 在多台服务器上运行 rsh

linux - sed 用空格和特殊字符替换字符串