Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在用户按下ctrl+;bash中的c?_Bash - Fatal编程技术网

在用户按下ctrl+;bash中的c?

在用户按下ctrl+;bash中的c?,bash,Bash,我正在尝试编写一个bash脚本,其中我需要运行一个二进制文件,如果我按下Ctrl+c,那么在脚本中,后台运行的二进制文件也应该停止。我正在尝试此代码,但它没有帮助: #!/bin/bash cd /usr/local/path-to-binary ./testBinary read input if (( "$input" == "Ctrl+c")); then ps -aef|grep Binary pkill -9 Binary 您的脚本中有几个错误。检查一下 下面是一个如何启动后台

我正在尝试编写一个bash脚本,其中我需要运行一个二进制文件,如果我按下Ctrl+c,那么在脚本中,后台运行的二进制文件也应该停止。我正在尝试此代码,但它没有帮助:

#!/bin/bash

cd /usr/local/path-to-binary
./testBinary
read input

if (( "$input"  == "Ctrl+c")); then
ps -aef|grep Binary
pkill -9 Binary

您的脚本中有几个错误。检查一下

下面是一个如何启动后台进程并在Ctrl+c上终止它的示例:


PS:只需运行脚本并按Ctrl+c<不需要代码>读取。

脚本中有几个错误。检查一下

下面是一个如何启动后台进程并在Ctrl+c上终止它的示例:


PS:只需运行脚本并按Ctrl+c<代码>读取不是必需的。

我建议养成一种习惯,在这里提问之前,先运行代码并修复它找到的所有内容。也就是说,在这里的代码中,
读取输入
在退出
testBinary
之前不会运行,除非它自己后台处理,从而试图避免检测……而且
(())
是一个算术构造——它对字符串比较没有意义,并不是说
read
在被中断后将返回字符串
Ctrl+c
。你能帮我摆脱这个脚本问题吗#Charles Duffy事实上我是一个shell脚本初学者。如果你从这段经历中得到的只是准备好复制和粘贴的代码作为答案,那么你将一无所获;这就是上面注释的要点,尤其是第一个注释。(我还建议记下和作为高质量的学习资源)。我建议养成一种习惯,在这里提问之前运行代码并修复它找到的所有内容。也就是说,在这里的代码中,
read input
永远不会运行,直到退出
testBinary
,除非它自己后台处理,从而试图避免检测……而且
(())
是一个算术构造——它对字符串比较没有意义,并不是说
read
在被中断后将返回字符串
Ctrl+c
。你能帮我摆脱这个脚本问题吗#Charles Duffy事实上我是一个shell脚本初学者。如果你从这段经历中得到的只是准备好复制和粘贴的代码作为答案,那么你将一无所获;这就是上面注释的要点,尤其是第一个注释。(我还建议记下和作为高质量的学习资源)。
#!/bin/bash

# Register signal handler for SIGINT (Ctrl+c)
trap abort INT 

function abort() {
    echo "Sending SIGINT to background process ${pid}"
    # Kill background process
    kill "${pid}"
    # Wait for it to finish after killing it
    wait "${pid}"
    # Exit the script
    echo "Aborting"
    exit 1   
}

# Start long running process in background (&)
sleep 1000 &
# Obtain the pid of that process
pid=$!
# Wait for the background process to finish
wait