스레드 내에서 시간 초과를 처리하려고합니다. 내 스크립트에는 4 개의 스레드가 있고, 각 스레드는 명령을 실행해야하며 너무 오래 걸리면 명령 프로세스를 중단시킵니다.스레드 내에서 하위 프로세스를 올바르게 종료하는 방법은 무엇입니까?
는 내가 뭐하는 거지 것은 :
my $pid;
if (!($pid = fork))
{
my $pid2;
if (!($pid2 = fork))
{
exec_cmd $command;
}
local $SIG{ALRM} = sub {kill 9, $pid2;};
alarm $timeout;
waitpid $pid2, 0;
exit(0);
}
waitpid $pid, 0;
$ret = $?;
이는 스레드 내에서 실행되므로 아이의 종료는 다른 스레드는 여전히 결합되지 않은 때입니다. 나는 펄 스레드에서 양산 자식 프로세스의 실행에 시간 제한을 적용하고, 그 아이의 종료 코드를 캡처 할 수있는 방법
이 코드는 스레드가 아닌 포크를 사용합니다. –
예하지만 스크립트의 일부일 뿐이므로이 코드는 스레드 내부에서 호출됩니다. – Robin
질문은 무엇입니까? – pilcrow