我有一个使用Net :: OpenSSH的perl脚本。有一刻我有以下代码:
$ssh->system(@cmd) or die "Failed to execute command on remote system";
出于各种原因,我可能想要杀死命令,当我按下^ C时,我希望整个链终止。使用上述命令仅终止本地进程。
Google问题解决后,我找到了that I need to allocate pseudo-terminal。我试着用:
$ssh->system({tty => 1}, @cmd) or die "Failed to execute command on remote system";
哪个部分工作 - 它终止了远程进程而不是本地进程(我找不到检查错误的方法,这将区分两者)。我试过spawn
并认为阻塞信号与它有关:
my $pid = $ssh->spawn({tty => 1}, @cmd) or die "Failed to execute command on remote system";
waitpid($pid, 0);
die "Failed to execute command on remote system" unless ($? == 0);
如何停止^ C上的所有内容或终止本地命令?
PS。我正在执行的命令是一个perl脚本,如果它有帮助我可以控制它。