日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
WRITE(2) FreeBSD システムコールマニュアル WRITE(2) 名称 write, writev, pwrite, pwritev -- 出力を書み込む ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <unistd.h> ssize_t write(int fd, const void *buf, size_t nbytes); ssize_t pwrite(int fd, const void *buf, size_t nbytes, off_t offset); #include <sys/uio.h> ssize_t writev(int fd, const struct iovec *iov, int iovcnt); ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); 解説 write() システムコールは、記述子 fd によって参照されるオブジェクトへの データの nbytes を buf によって指されるバッファに書き込むことを試みます。 writev() システムコールは、同じ動作を実行しますが、iov 配列: iov[0], iov[1], ..., iov[iovcnt-1] のメンバによって指定された iovcnt バッファから 出力データを集めます。pwrite() と pwritev() システムコールは、同じ機能を 実行しますが、ファイルポインタを修正せずに、ファイルの指定された位置に書 き込みます。 writev() と pwritev() のために、iovec 構造体は、次のように定義されます: struct iovec { void *iov_base; /* ベースアドレス. */ size_t iov_len; /* 長さ. */ }; 各 iovec エントリは、データが書き込まれるべきメモリの領域のベースアドレス と長さを指定します。writev() システムコールは、常に次に進む前に、完全に領 域に書き込みます。 シーク可能なオブジェクトで、write() は、fd と関連したポインタによって与え られる位置で開始します (lseek(2) を参照)。write() からの返るとき、ポイン タは、書き込まれたバイトの数ずつ増加されます。 シーク可能でないオブジェクトは、常に現在の位置から書き込まれます。そのよ うなオブジェクトに関連したポインタの値は、未定義です。 実ユーザがスーパユーザでないなら、write() は、ファイルのセットユーザ ID (set-user-ID) ビットをクリアします。これは、スーパユーザによって所有され ている書き込み可能なセットユーザ ID (set-user-ID) ファイルを ``捕らえる'' ユーザによってシステムセキュリティの侵入を防止します。 フロー制御の対象となるソケットのようなオブジェクトでブロッキングされない I/O を使用するとき、write() と writev() は、要求されたものより少ないバイ トを書き込むかもしれません。返り値は、注意されなければならず、操作の残り は、可能なときに、再試行されるべきです。 戻り値 成功して完了するなら、実際に書き込まれたバイト数が返されます。そうでなけ れば、-1 が、返され、グローバル変数 errno は、エラーを示す値に設定されま す。 エラー write(), writev(), pwrite() と pwritev() システムコールは、次の場合に、失 敗して、ファイルポインタは、変更されないままです: [EBADF] fd 引数が、書き込みのためにオープンされた有効な記述子 ではありません。 [EPIPE] いずれかのプロセスによって読み込みのためにオープンされ ていないパイプに書き込む試みが行われました。 [EPIPE] 通信相手ソケットに接続されていないタイプ SOCK_STREAM のソケットに書き込む試みが行われました。 [EFBIG] プロセスのファイルサイズの制限または最大のファイルサイ ズを越えているファイルに書き込む試みが行われました。 [EFAULT] iov の部分またはファイルに書き込まれるデータが、プロセ スの割り付けられたアドレス空間の外側を指しています。 [EINVAL] fd に関連したポインタが、負でした。 [ENOSPC] ファイルを含んでいるファイルシステムに残っている空き空 間がありません。 [EDQUOT] ファイルを含んでいるファイルシステムのディスクブロック のユーザのクォータ (quota) が使い果たされました。 [EIO] I/O エラーが、ファイルシステムから読み込んでいるか、ま たはに書き込んでいる間に起こりました。 [EINTR] 書き込みが完了する前に、シグナルが割り込みました。 [EAGAIN] ファイルが、ブロッキングされない I/O とマークされて、 データを直ちに書き込むことができませんでした。 [EROFS] スライスの最初でディスクラベルの領域を越えて書き込む試 みが行われました。ディスクラベルの領域で書き込むを有効 にするためには、disklabel(8) -W を使用します。 [EINVAL] 値 nbytes が、INT_MAX より大きくなっています。 さらに、writev() と pwritev() は、次のエラーの 1 つを返します: [EDESTADDRREQ] 宛先アドレスを設定するために使用される connect(2) で、 UNIX ドメインのデータグラムのソケットに書き込むとき、 宛先が、もはや利用可能ではありません。 [EINVAL] iovcnt 引数が、0 以下であったか、または IOV_MAX より大 きかった。 [EINVAL] iov 配列の iov_len 値の 1 つが、負でした。 [EINVAL] iov 配列の iov_len 値の合計が、32 ビット整数をオーバフ ローしました。 [ENOBUFS] mbuf プールが、ソケットに書き込んでいるとき、完全に使 い果たされました。 また pwrite() と pwritev() システムコールは、次のエラーを返します: [EINVAL] offset 値が、負でした。 [ESPIPE] ファイル記述子が、パイプ、ソケット、または FIFO に関連 しています。 関連項目 fcntl(2), lseek(2), open(2), pipe(2), select(2) 規格 write() システムコールは、ISO/IEC 9945-1:1990 (``POSIX.1'') に適合するは ずです。writev() と pwrite() システムコールは、X/Open Portability Guide Issue 4, Version 2 (``XPG4.2'') に適合するはずです。 歴史 pwritev() システムコールは、FreeBSD 6.0 で登場しました。pwrite() 関数は、 AT&T System V Release 4 UNIX で登場しました。writev() システムコールは、 4.2BSD で登場しました。write() 関数は、Version 6 AT&T UNIX で登場しまし た。 FreeBSD 11.2 October 23, 2017 FreeBSD 11.2