sockatmark(3) | Library Functions Manual | sockatmark(3) |
NUME
sockatmark - determină dacă soclul se află la marcajul de ieșire din bandă
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#include <sys/socket.h>
int sockatmark(int sockfd);
sockatmark():
_POSIX_C_SOURCE >= 200112L
DESCRIERE
sockatmark() returnează o valoare care indică dacă soclul la care face referire descriptorul de fișier sockfd se află sau nu la marcajul de ieșire din bandă. Dacă soclul se află la marcaj, atunci se returnează 1; dacă soclul nu se află la marcaj, se returnează 0. Această funcție nu elimină marcajul de ieșire din bandă.
VALOAREA RETURNATĂ
Un apel reușit la sockatmark() returnează 1 dacă soclul se află la marcajul de ieșire din bandă sau 0 dacă nu este. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.
ERORI-IEȘIRE
ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare |
sockatmark() | Siguranța firelor | MT-Safe |
STANDARDE
POSIX.1-2008.
ISTORIC
glibc 2.2.4. POSIX.1-2001.
NOTE
Dacă sockatmark() returnează 1, atunci datele din afara benzii pot fi citite folosind indicatorul MSG_OOB din recv(2).
Datele din afara benzii sunt acceptate numai în cazul anumitor protocoale de soclu de flux.
sockatmark() poate fi apelat în condiții de siguranță de la un gestionar pentru semnalul SIGURG.
sockatmark() este implementată utilizând operația ioctl(2) SIOCATMARK.
ERORI
Înainte de glibc 2.4, sockatmark() nu funcționa.
EXEMPLE
Următorul cod poate fi utilizat după primirea unui semnal SIGURG pentru a citi (și a elimina) toate datele până la marcaj și apoi pentru a citi octetul de date de la marcaj:
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"); ... } }
CONSULTAȚI ȘI
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
2 mai 2024 | Pagini de manual de Linux 6.9.1 |