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