O_ASYNC オプションを使用したいのですが、パイプが読み取れると、SIGIO のハンドラーが実行されます。
しかし、次のコードは機能しません。誰でも私を助けることができますか?
#!/bin/env perl
use Fcntl;
$SIG{IO}= sub {
print "catch SIGIO!\n";
};
my $flags=0;
open(FH,"-|","sleep 4 ;echo aaa") or die "$!";
fcntl(FH,F_GETFL,$flags) or die "$!";
fcntl(FH,F_SETFL,$flags | O_NONBLOCK | O_ASYNC) or die "$!";
sleep(5);
print "complete\n";
私のperlバージョンは5.16.1、オペレーティングシステムはRedhat 5u4、カーネル2.6.18、x86_64です