sockatmark(3) - wariua/manpages-ko GitHub Wiki

NAME

sockatmark - μ†ŒμΌ“μ΄ λŒ€μ—­μ™Έ ν‘œμ‹œμ— μžˆλŠ”μ§€ μ•Œμ•„λ³΄κΈ°

SYNOPSIS

#include <sys/socket.h>

int sockatmark(int sockfd);

glibc κΈ°λŠ₯ 확인 맀크둜 μš”κ±΄ (feature_test_macros(7) μ°Έκ³ ):

sockatmark():
_POSIX_C_SOURCE >= 200112L

DESCRIPTION

sockatmark()λŠ” 파일 λ””μŠ€ν¬λ¦½ν„° sockfdκ°€ κ°€λ¦¬ν‚€λŠ” μ†ŒμΌ“μ΄ λŒ€μ—­μ™Έ ν‘œμ‹œμ— μœ„μΉ˜ν•΄ μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 값을 λ°˜ν™˜ν•œλ‹€. μ†ŒμΌ“μ΄ κ·Έ ν‘œμ‹œμ— 있으면 1을 λ°˜ν™˜ν•œλ‹€. μ†ŒμΌ“μ΄ κ·Έ ν‘œμ‹œμ— μžˆμ§€ μ•ŠμœΌλ©΄ 0을 λ°˜ν™˜ν•œλ‹€. 이 ν•¨μˆ˜κ°€ λŒ€μ—­μ™Έ ν‘œμ‹œλ₯Ό μ œκ±°ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.

RETURN VALUE

성곡적인 sockatmark() ν˜ΈμΆœμ€ μ†ŒμΌ“μ΄ λŒ€μ—­μ™Έ ν‘œμ‹œμ— 있으면 1을 λ°˜ν™˜ν•˜κ³  μ•„λ‹ˆλ©΄ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° 였λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄λ„λ‘ errnoλ₯Ό μ„€μ •ν•œλ‹€.

ERRORS

EBADF
sockfdκ°€ μœ νš¨ν•œ 파일 λ””μŠ€ν¬λ¦½ν„°κ°€ μ•„λ‹ˆλ‹€.
EINVAL
sockfdκ°€ sockatmark()λ₯Ό μ μš©ν•  수 μžˆλŠ” 파일 λ””μŠ€ν¬λ¦½ν„°κ°€ μ•„λ‹ˆλ‹€.

VERSIONS

glibc 버전 2.2.4μ—μ„œ sockatmark()κ°€ μΆ”κ°€λ˜μ—ˆλ‹€.

ATTRIBUTES

이 μ ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄λ“€μ— λŒ€ν•œ μ„€λͺ…은 attributes(7)λ₯Ό 보라.

μΈν„°νŽ˜μ΄μŠ€ 속성 κ°’
sockatmark() μŠ€λ ˆλ“œ μ•ˆμ „μ„± MT-Safe

CONFORMING TO

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

NOTES

sockatmark()κ°€ 1을 λ°˜ν™˜ν•˜λŠ” κ²½μš°μ—λŠ” recv(2)의 MSG_OOB ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•΄ λŒ€μ—­μ™Έ 데이터λ₯Ό 읽을 수 μžˆλ‹€.

일뢀 슀트림 μ†ŒμΌ“ ν”„λ‘œν† μ½œλ“€μ—μ„œλ§Œ λŒ€μ—­μ™Έ 데이터λ₯Ό μ§€μ›ν•œλ‹€.

SIGURG μ‹œκ·Έλ„ ν•Έλ“€λŸ¬μ—μ„œ μ•ˆμ „ν•˜κ²Œ sockatmark()λ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.

sockatmark()λŠ” SIOCATMARK ioctl(2) λ™μž‘μ„ μ΄μš©ν•΄ κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€.

BUGS

glibc 2.4 μ „μ—μ„œλŠ” sockatmark()κ°€ μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•Šμ•˜λ‹€.

EXAMPLE

λ‹€μŒ μ½”λ“œλ₯Ό 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");
        ...
    }
}

SEE ALSO

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


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️