Implements the fcntl(2) function. You'll probably have to say

fcntl(2) 関数を実装します。 正しい定数定義を得るために、まず

    use Fcntl;

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

と書くことが必要でしょう。 引数の処理と返り値については、下記の ioctl と同様に動作します。 例えば:

    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.

fcntl からの返り値のチェックに defined を使う必要はありません。 ioctl と違って、fnctl はシステムコールの結果が 0 だった場合は "0 だが真"を返します。 この文字列は真偽値コンテキストでは真となり、 数値コンテキストでは 0 になります。 これはまた、不適切な数値変換に関する通常の -w 警告を回避します。

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.

fcntl(2) が実装されていないマシンでは、fcntlは例外を 引き起こすことに注意してください。 システムでどの関数が利用可能かについては Fcntl モジュールや fcntl(2) man ページを参照してください。

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.

これは REMOTE というファイルハンドルをシステムレベルで 非ブロックモードにセットする例です。 ただし、 $| を自分で管理しなければなりません。

    use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);

    $flags = fcntl(REMOTE, F_GETFL, 0)
                or die "Can't get flags for the socket: $!\n";

    $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
                or die "Can't set flags for the socket: $!\n";

Portability issues: "fcntl" in perlport.

移植性の問題: "fcntl" in perlport