2014-11-22 85 views
2

在Perl用perl「系統」的命令開始,我開始在兩個不同的窗口的命令行(CMD)的兩個命令,如下:的Perl:停止在窗口

system("start $cmd1"); 
system("start $cmd2"); 

基本上,這兩個命令繼續運行,直到我用「CTRL + C」來阻止他們。

我的問題是:

如何 「CTR + C」 發送到每個隊列的內容(或命令)?

謝謝。

回答

0

我解決它通過創建兩個分離的過程。請參見下面的代碼:`

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); 

`

0

我認爲你可以使用

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); 
+0

在什麼情況下會'system'返回一個進程ID? – DavidO 2014-11-22 21:08:29

+0

沒關係,我在http://perldoc.perl.org/perlport.html#system – DavidO 2014-11-22 22:17:22

+1

找到了答案你也可以用'open()'來做類似的事情。如果你打開()一個exec管道,它將返回一個pid。 – Sobrique 2014-11-22 22:30:24