2
在Perl用perl「系統」的命令開始,我開始在兩個不同的窗口的命令行(CMD)的兩個命令,如下:的Perl:停止在窗口
system("start $cmd1");
system("start $cmd2");
基本上,這兩個命令繼續運行,直到我用「CTRL + C」來阻止他們。
我的問題是:
如何 「CTR + C」 發送到每個隊列的內容(或命令)?
謝謝。
在Perl用perl「系統」的命令開始,我開始在兩個不同的窗口的命令行(CMD)的兩個命令,如下:的Perl:停止在窗口
system("start $cmd1");
system("start $cmd2");
基本上,這兩個命令繼續運行,直到我用「CTRL + C」來阻止他們。
我的問題是:
如何 「CTR + C」 發送到每個隊列的內容(或命令)?
謝謝。
我解決它通過創建兩個分離的過程。請參見下面的代碼:`
use Win32::Process;
use Win32;
sub ErrorReport{
print Win32::FormatMessage(Win32::GetLastError());
}
Win32::Process::Create($ProcessObj,
"C:\\winnt\\system32\\notepad.exe",
"notepad temp.txt",
0,
DETACHED_PROCESS,
".")|| die ErrorReport();
$ProcessObj->Suspend();
$ProcessObj->Resume();
$ProcessObj->Wait(INFINITE);
`
我認爲你可以使用
my $pid = system(1, $cmd1);
# One of the following:
kill(INT => $pid); # Sends Ctrl-C
kill(TERM => $pid); # Sends Ctrl-Break
kill(KILL => $pid); # Calls TerminateProcess($handle, 9)
waitpid($pid, 0);
在什麼情況下會'system'返回一個進程ID? – DavidO 2014-11-22 21:08:29
沒關係,我在http://perldoc.perl.org/perlport.html#system – DavidO 2014-11-22 22:17:22
找到了答案你也可以用'open()'來做類似的事情。如果你打開()一個exec管道,它將返回一個pid。 – Sobrique 2014-11-22 22:30:24