Perl 다중 프로세스 파일 잠금

5520 단어 perl
fcntl FILEHANDLE,FUNCTION,SCALAR
Implements the fcntl(2) function. You'll probably have to say

  
    
use Fcntl ;

first to get the correct constant definitions. Argument processing and value returned work just like  ioctl below. For example:

  
    
use Fcntl ;
fcntl ( $filehandle , F_GETFL , $packed_return_buffer )
or
die " can't fcntl F_GETFL: $! " ;

You don't have to check for  defined  on the return from  fcntl . Like  ioctl , it maps a  0  return from the system call into  "0 but true"  in Perl. This string is true in boolean context and  0  in numeric context. It is also exempt from the normal -w warnings on improper numeric conversions.
Note that  fcntl  raises an exception if used on a machine that doesn't implement fcntl(2). See the Fcntl module or your fcntl(2) manpage to learn what functions are available on your system.
Here's an example of setting a filehandle named  REMOTE  to be non-blocking at the system level. You'll have to negotiate  $|  on your own, though.

  
    
use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
$flags = fcntl (REMOTE , F_GETFL , 0 )
or
die " Can't get flags for the socket: $!
" ;
$flags = fcntl (REMOTE , F_SETFL , $flags | O_NONBLOCK)
or
die " Can't set flags for the socket: $!
" ;

좋은 웹페이지 즐겨찾기