Как мне открыть более 64 дочерних процессов на windows, используя IP C :: Open3 в perl? - PullRequest
2 голосов
/ 18 июня 2020

Я получаю следующую ошибку, когда пытаюсь открыть 65-й дочерний процесс в windows: open3: IO::Pipe: Can't spawn-NOWAIT: Resource temporarily unavailable

Как открыть более 64 дочерних процессов на windows с использованием IP C: : Open3 in perl?

Следующий код отлично работает в linux, но не работает с указанной выше ошибкой на windows:

use POSIX qw[ :sys_wait_h ];;
use IPC::Open3;
use Carp;
use FileHandle;


my $i = 0;

while ($i < 300){
    my($IN)  = new FileHandle;
    my($OUT) = new FileHandle;    
    my($ERR) = new FileHandle;

    $IN->autoflush(1);
    $ERR->autoflush(1);

    my($childpid) = IPC::Open3::open3($IN, $OUT, $_ERR, "<xyz process>")  or 
                    Carp::confess("/n=====$i=======/nCould not open pipe");

    waitpid( $childpid, &WNOHANG);

    $ASPELL_IN->close();
    $ASPELL_OUT->close();
    kill(0,$childpid);
}
...