SOCKATMARK

Section: Linux Programmer's Manual (3)
Updated: 2020-06-09
Index JM Home Page
 

名前

sockatmark - どのソケットに帯域外 (out-of-band) マークが付けられているかを調べる  

書式

#include <sys/socket.h>

int sockatmark(int sockfd);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

sockatmark(): _POSIX_C_SOURCE >= 200112L  

説明

sockatmark() はファイルディスクリプター sockfd で参照されるソケットに帯域外マークが付けられているか否かを返す。 ソケットにマークが付けられている場合は、1 が返される。 ソケットにマークが付けられていない場合は、0 が返される。 この関数は帯域外マークを削除しない。  

返り値

sockatmark() の呼び出しが成功した場合、ソケットに帯域外マークが 付けられていれば 1 を返し、付けられていなければ 0 を返す。 エラーの場合は -1 が返され、エラーを表す errno が設定される。  

エラー

EBADF
sockfd が有効なファイルディスクリプターでない。
EINVAL
sockfd は sockatmark() が適用できないファイルディスクリプターである。
 

バージョン

sockatmark() は glibc バージョン 2.2.4 で追加された。  

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
sockatmark() Thread safety MT-Safe
 

準拠

POSIX.1-2001, POSIX.1-2008.  

注意

sockatmark() が 1 を返す場合、帯域外データは MSG_OOB を指定した recv(2) で読み込むことができる。

帯域外データは、いくつかのストリームソケットプロトコルでしか サポートされていない。

sockatmark() は SIGURG シグナルのハンドラーから安全に呼び出すことができる。

sockatmark() は SIOCATMARK ioctl(2) 操作を使って実装されている。  

バグ

glibc 2.4 より前のバージョンでは、 sockatmark() は動作しない。  

例

以下のコードは、 SIGURG シグナルを受け取った後にマークまでの全てのデータを読み込んで (破棄し)、 マークされたデータのバイトを読み込むのに使用できる。


    char buf[BUF_LEN];
    char oobdata;
    int atmark, s;


    for (;;) {
        atmark = sockatmark(sockfd);
        if (atmark == -1) {
            perror("sockatmark");
            break;
        }


        if (atmark)
            break;


        s = read(sockfd, buf, BUF_LEN);
        if (s == -1)
            perror("read");
        if (s <= 0)
            break;
    }


    if (atmark == 1) {
        if (recv(sockfd, &oobdata, 1, MSG_OOB) == -1) {
            perror("recv");
            ...
        }
    }  

関連項目

fcntl(2), recv(2), send(2), tcp(7)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

マーク   ソケット   域外   atmark   sockatmark   sockfd   perror   break   シグナル   oobdata   read   recv   socket   検査   マクロ   要件   macros   成功   適用   用語   allbox   インターフェース   属性   Thread   safety

Linux マニュアル 一覧

関連するコマンド・関数

socklist.8   sendmmsg.2   st.4   rcsintro.1   mt.1   getsockopt.2
 

Index

名前
書式
説明
返り値
エラー
バージョン
属性
準拠
注意
バグ
例
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:09 GMT, October 11, 2026