日本語 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.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SEND(2) FreeBSD システムコールマニュアル SEND(2) 名称 send, sendto, sendmsg, sendmmsg -- ソケットから (複数の) メッセージを送信 する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <sys/types.h> #include <sys/socket.h> ssize_t send(int s, const void *msg, size_t len, int flags); ssize_t sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); ssize_t sendmsg(int s, const struct msghdr *msg, int flags); ssize_t sendmmsg(int s, struct mmsghdr * restrict msgvec, size_t vlen, int flags); 解説 send() と sendmmsg() 関数と sendto() と sendmsg() システムコールは、 (sendmmsg() 呼び出しで) 1 つ以上のメッセージを別のソケットに送信するため に使用されます。send() 関数は、ソケットが、接続された状態であるときだけ使 用されますが、一方 sendto(), sendmsg() と sendmmsg() は、いつでも使用され ます。 ターゲットのアドレスは、そのサイズを指定している tolen で to によって与え られます。メッセージの長さは、len によって与えられます。メッセージが基本 的なプロトコルを通して不可分に渡すには、長すぎるなら、エラー EMSGSIZE が、返され、メッセージは、送信されません。 sendmmsg() 関数は、呼び出しで複数のメッセージを送信します。それらは、ベク トルサイズを指定している vlen とともに msgvec ベクトルによって与えられま す。各メッセージごとに送信されるオクテットの数は、転送の後にベクトルの各 処理された要素の msg_len フィールドに置かれます。 send() において、配信の失敗は、示されません。ローカルに検出されたエラー は、-1 の返り値によって示されます。 メッセージの空間が、送信されるメッセージを保持するソケットで利用可能では ないなら、send() は、ソケットが非ブロッキング I/O モードに置かれていない なら、通常ブロックします。select(2) システムコールは、より多くのデータを いつ送信することが可能であるかを決定するために使用されます。 flags 引数は、次の 1 つ以上を含みます: #define MSG_OOB 0x00001 /* 帯域外データを処理します */ #define MSG_DONTROUTE 0x00004 /* 経路制御をバイパスし, インタフェースを直接使用します */ #define MSG_EOR 0x00008 /* レコードを終了するデータ */ #define MSG_EOF 0x00100 /* トランザクションを終了するデータ */ #define MSG_NOSIGNAL 0x20000 /* EOF で SIGPIPE を発生しません */ フラグ MSG_OOB は、この観念をサポートするソケット (例えば、SOCK_STREAM) で ``帯域外'' のデータを送信するために使用されます。基本的なプロトコル は、``帯域外'' のデータもサポートしなければなりません。MSG_EOR は、概念を サポートするプロトコルのためのレコードマークを示すために使用されます。 MSG_EOF は、ソケットの送信側がシャットダウンされることを要求し、適切な指 示が指定されたデータの終わりで送信されることを要求します。このフラグは、 PF_INET プロトコルファミリの SOCK_STREAM ソケットのためだけに実装されてい ます。MSG_DONTROUTE は、通常、診断または経路制御プログラムによってのみ使 用されます。MSG_NOSIGNAL は、クローズされるソケットに書き込むとき、 SIGPIPE の発生を防止するために使用されます。 msghdr 構造体と mmsghdr 構造体の説明については、recv(2) を参照してくださ い。 戻り値 send(), sendto() と sendmsg() 呼び出しは、送信されるオクテットの数を返し ます。sendmmsg() 呼び出しは、送信されたメッセージの数を返します。エラーが 起こったなら、-1 の値が、返されます。 エラー send() と sendmmsg() 関数と sendto() と sendmsg() システムコールは、次の 場合に失敗します: [EBADF] 無効の記述子が、指定されました。 [EACCES] 宛先アドレスが、ブロードキャスト (同報通信) アドレスで あり、SO_BROADCAST が、ソケットで設定されませんでし た。 [ENOTSOCK] 引数 s が、ソケットではありません。 [EFAULT] 無効のユーザ空間のアドレスが、引数のために指定されまし た。 [EMSGSIZE] ソケットが、メッセージが不可分に送信されることを必要と し、送信されるメッセージのサイズが、これで不可能にされ ています。 [EAGAIN] ソケットが、非ブロッキングとマークされ、要求された操作 は、ブロックするでしょう。 [ENOBUFS] システムが、内部のバッファを割り付けることができません でした。バッファが利用可能になるとき、操作が、成功する かもしれません。 [ENOBUFS] ネットワークインタフェースのための出力キューが、満杯で した。これは、一般的に、インタフェースが、送信すること を停止しますが、一時的な輻輳によって起こされることを示 します。 [EHOSTUNREACH] リモートのホストが、到達不能でした。 [EISCONN] 宛先アドレスが、指定され、ソケットが、すでに接続されて います。 [ECONNREFUSED] ソケットが、送信された最後のメッセージから ICMP 宛先到 達不能のメッセージを受信しました。これは、通常、受信者 が、リモートのポートで listen (接続を受け付け) してい ないことを意味します。 [EHOSTDOWN] リモートのホストが、ダウンしていました。 [ENETDOWN] リモートのネットワークが、ダウンしていました。 [EADDRNOTAVAIL] SOCK_RAW ソケットを使用しているプロセスが、jail 化され ていて、IP ヘッダで指定された送信元アドレスが、jail と バインドされた IP アドレスと一致しませんでした。 [EPIPE] ソケットが、これ以上データを送信することができません (SBS_CANTSENDMORE が、ソケットに設定されています)。こ れは、通常、ソケットが接続されていないことを意味してい ます。 関連項目 fcntl(2), getsockopt(2), recv(2), select(2), socket(2), write(2) 歴史 send() 関数は、4.2BSD で登場しました。sendmmsg() 関数は、FreeBSD 11.0 で 登場しました。 バグ sendmsg() は、データが転送されるまで、必ずしもブロックしないので、AF_UNIX ドメインソケット (recv(2) を参照) を越えてオープンされたファイル記述子を 転送することができ、次に、実際に送信される前に、それを close() (クローズ) し受信者がクローズされたファイル記述子を取得する結果となります。これが起 こることを防止するための確認メカニズムを実装することは、アプリケーション に委ねられています。 FreeBSD 11.2 January 29, 2016 FreeBSD 11.2