Answers:
您应该使用trap true 2
或trap : 2
代替trap '' 2
。这就是bash shell中的“帮助陷阱”所说的:
如果ARG为空字符串,则外壳程序及其调用的命令将忽略每个SIGNAL_SPEC 。
例:
$ cat /tmp/test
#! /bin/sh
trap : INT
cat
echo first cat killed
cat
echo second cat killed
echo done
$ /tmp/test
<press control-C>
^Cfirst cat killed
<press control-C>
^Csecond cat killed
done
通过将trap命令-
作为其动作参数,可以将陷阱重置为其默认值。如果在subshell中执行此操作,则不会影响父shell中的陷阱。在脚本中,您可以为需要使用Ctrl-C中断的每个命令执行此操作:
#!/bin/bash
# make the shell (and its children) ignore SIGINT
trap '' INT
.
.
.
# but this child won't ignore SIGINT
(trap - INT; my_program)
# the rest of the script is still ignoring SIGINT
.
.
.
exec my_program
在子外壳中提高效率。
当使用Crtl+时C,将中断程序(“ 杀死 ”程序)。
您可能正在寻找的是暂停程序(“ 暂停 ”程序)。为此,您可以使用Crtl+ Z。
程序暂停后,您可以使用查看它jobs
。例如:
[1]+ Stopped ./foobar
在这里,我只有一个工作,即工作#1,但是可以有多个-每个工作都有自己的编号。
您可以使用多个命令,例如控制您挂起的进程bg
,fg
和kill
。
bg %1
将启动作业#1中的b ACK 摹轮
fg %1
将重新启动作业#1的˚F矿g round
kill %1
将杀死作业1。
请注意,如果只有一个活动作业,则可以使用bg
并且fg
不带参数。
tail
!而非杀死猫下一次?