1

私のperlスクリプトには、どういうわけか機能していないように見える次のコードがあります。

my $thr;

sub start__server_thread()
{
        $thr = threads->create(\&iperf_start_server, $_[0], $_[1], $_[2]);
        print("Value of thread is $thr\n");
        &START_SERVER_RESPONSE($controller_ip, $controller_port, "success", 2345, $_[1]);
}

sub iperf_start_server()
{
# Do some stuff here and then handle the signal
$SIG{'SIGSTOP'} = sub {
        print("Stop signal received\n");
        $thr->exit();
        $flag = 1;
        };
}

sub stop_server()
{
        my ($dat,$filelog,$result);
        $thr->kill('STOP');
        $flag = 1;
        sleep(10);
        $thr->exit(1);
}

他のコンテキストから stop_server() が呼び出されると、SIGSTOP シグナルをスレッドに送信しようとします。この時点で実行が停止し、「シグナル SIGSTOP を受信しましたが、perl スクリプトにシグナル ハンドラが設定されていません。どこが間違っていますか?」というエラーが表示されます。

4

1 に答える 1