Perl:停止在Windows中使用perl“system”启动的命令

时间:2014-11-22 19:21:04

标签: windows perl command system

在Perl中,我在两个不同的Windows命令行(Cmd)中启动了两个命令,如下所示:

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

基本上,两个命令都会继续运行,直到我使用" CTRL + C"停止它们。

我的问题是:

如何发送" CTR + C"到每个Cmd行(或命令)?

谢谢。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);

`