Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Macos Bash-使用终端GUI终止脚本时执行清理代码;“关闭”;_Macos_Bash_Terminal - Fatal编程技术网

Macos Bash-使用终端GUI终止脚本时执行清理代码;“关闭”;

Macos Bash-使用终端GUI终止脚本时执行清理代码;“关闭”;,macos,bash,terminal,Macos,Bash,Terminal,我甚至不确定是否有办法做到这一点,因为我已经搜索了一整天,似乎我必须trap SIGKILL(我知道不能被trap)但是 使用SIGTERM和SIGINT,我让我当前的脚本执行清理操作,以便在按下Ctrl+C时恢复对硬盘的临时更改。那很好用。但是,如果我关闭终端窗口(通过单击红色交通灯),系统会询问我是否要终止当前正在运行的进程,但单击“关闭”似乎并没有实际终止脚本。我可以这么说,因为日志文件不断更新信息,脚本的其他部分仍在运行 所以我的问题是,当您关闭GUI窗口时,会向脚本发送什么信号(如果有

我甚至不确定是否有办法做到这一点,因为我已经搜索了一整天,似乎我必须
trap SIGKILL
(我知道不能被
trap
)但是

使用SIGTERM和SIGINT,我让我当前的脚本执行清理操作,以便在按下Ctrl+C时恢复对硬盘的临时更改。那很好用。但是,如果我关闭终端窗口(通过单击红色交通灯),系统会询问我是否要终止当前正在运行的进程,但单击“关闭”似乎并没有实际终止脚本。我可以这么说,因为日志文件不断更新信息,脚本的其他部分仍在运行


所以我的问题是,当您关闭GUI窗口时,会向脚本发送什么信号(如果有)?如果没有或不可修补,如果GUI关闭或在下一次运行时终止上一个脚本,如何避免脚本运行?

捕获脚本终止的常用方法是简单地使用保留字
EXIT
。例如:

trap "echo bye" EXIT
(不过,我没有OSX来测试特定的案例)