2013-05-26 54 views
2

我需要這樣做:如何在Perl中異步運行外部程序?

  1. 運行程序1(異步)
  2. 運行程序2(同步)
  3. 記住程序2
  4. 殺程序1的返回碼
+4

'IPC :: Open3'或'叉子(); EXEC()'; – jordanm

+1

@jordanm,爲什麼要直接使用fork + exec複製IPC :: Open3的100行代碼。與IPC :: Run3或IPC :: Run相比,即使IPC :: Open3也可能過低。 – ikegami

+0

@alkedr,取決於你是否需要餵它們輸入,捕獲它們的輸出等。 – ikegami

回答

1

我認爲這將訣竅:

use IPC::Run qw(start run); 
my $prog1_h = start [ $prog1, @progs1_args ]; 
run [ $prog2, @progs2_args ]; 
my $prog2_exit_code = $? >> 8; 
$prog1_h->finish();