我想使用O_ASYNC選項,並且當管道可以讀取時,SIGIO的處理程序將運行, 。如何在perl中使用O_ASYNC和fcntl?
但以下代碼不起作用。任何人都可以幫助我?
#!/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的
FIFO上的O_ASYNC是否在C系統中工作? – pilcrow
我寫了一個C版本,但它也沒有工作:你能給我一個C例子嗎? – Chinaxing