我需要 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/