in reply to Re: named pipe and "Text file busy"
in thread named pipe and "Text file busy"

Thanks I should note that "text file busy" only happens after i open the pipe with my perl script and terminate it. After that, this error occurs irrespective of whether later i've got the script (reader) running together with the writer or a writer by itself.
I've checked the pipe is open by one thread only and the descriptor is not maintained after i exit the script.
The code snippet is quite basic:
my $alertsthr = threads->new(\&al_thread); $SIG{'INT'} = 'CLEANUP'; sub CLEANUP { print "\nClosing pipe\n"; close PIPE; exit(); } sub al_thread { my $myline; while (1) # keep reading from the pipe until we're killed { print "$config->{FIFO} open\n" if $config->{VERBOSE}; open (PIPE, "$config->{FIFO}") or die "Could not open the input +pipe $config->{FIFO}\n"; while($myline = <PIPE>) { print "read $myline\n" if $config->{VERBOSE}; process_message($myline); } print "$config->{FIFO} EOF\n" if $config->{VERBOSE}; } }

Replies are listed 'Best First'.
Re^3: named pipe and "Text file busy"
by sgt (Deacon) on Nov 28, 2007 at 00:20 UTC

    Is there really any guarantee that the SIGINT will be caught by the right thread? you could try forking which would be ok in this respect.

    Then the ETXTBSY (errno 26) is weird. I see the error only with open(2) but not read(2) or write(2). Cannot reproduce it on hp testdrive.

    cheers --stephan