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";
내 펄 버전은 5.16.1입니다, 운영 시스템 레드햇 5u4, 커널 2.6.18, x86_64에있다
FIFO에서 O_ASYNC는 C에서 시스템에서 작동합니까? – pilcrow
C 버전을 작성했지만 작동하지 않았습니다. C 예제를 줄 수 있습니까? – Chinaxing