У меня есть следующий дизайн в Perl-скрипте:
my $child_pid = fork;
if( ! $child_pid ){
# do some stuff...
exec( $user_specified_command );
else{
# wait for child to exit
waitpid( $child_pid, 0 );
}
# Continue with the script
Я заинтересован в получении оповещения у родителя, когда ребенок исполняется, чтобы я мог получить некоторые сведения о $user_specified_command
(в частности, использовать lsof
, чтобы узнать, перенаправлен ли stdout в обычный файл) , Результат будет примерно таким:
my $child_pid = fork;
if( ! $child_pid ){
# do some stuff...
exec( $user_specified_command );
else{
# wait until the child exec's
wait_child_exec();
# do some stuff...
# wait for child to exit
waitpid( $child_pid, 0 );
}
# Continue with the script
Я мог бы зацикливать и выводить grep ps
до тех пор, пока имя не изменится, но кажется, что exec - достаточно серьезное событие, и есть лучший способ.