0

スクリプト内のすべてのシステム コマンドを Win::32::Process::Create コマンドに変換したいと考えています。CPAN は私に構文を教えてくれます:

Win32::Process::Create($obj,$appname,$cmdline,$iflags,$cflags,$curdir)

だから、私はそれを適用しようとしました:

Win32::Process::Create( $Win32processObj,
                        "C:\\Perl64\\bin\\perl.exe",
                        "'C:\\Users\\script.pl','$arg'",
                         0,
                         NORMAL_PRIORITY_CLASS,
                         "." ) ||  die "Failed to create process.\n";

これを実行すると、エラーは発生しませんが、新しいプロセスも開始されません...

GetProcessID() を使用すると、pid が取得されますが、それはタスクリストの何にも対応していません... (タスクリストに表示される前に、作成されたプロセスが終了すると想定しています)。

4

1 に答える 1

1

あなたのコメントによると、Windowsはプロセスを作成したと言います。あなたの質問によると、作成されていないと主張するプロセスのプロセスIDさえあります。私は手足を出して、あなたが間違っていると言うつもりです。

プロセスが終了したコードを確認する必要があります。perl -E'say $!=THECODE;'ヒントになるかもしれません。'C:\Users\script.pl'しかし、Perl に(. ではなく)という名前のファイルを実行するように指示したことが原因である可能性がありますC:\Users\script.pl

于 2013-11-06T22:46:52.750 に答える