recvmsg 의 flag 에 대한 값 질문드려요

jinprho의 이미지

recvmsg 함수를 보면 내부에 msghdr 헤더가 있는데,
이 헤더 내의 msg_flags란 값이 있다는 것을 알았습니다.

그런데 이 헤더내의 플래그값이 어떤건 검사만하고 어떤건 검사+리턴 되고 어떤건 리턴만 된다고 봤는데,

죄송하지만 무엇을 검사한다는 것인지..
(이건 플래그 값에 따라 대강은 알겠습니다.)

무엇을 리턴한다는 것인지(이 부분을 잘 모르겠습니다.)

recvmsg에 대한 처리 과정에 대해서 대략적인 설명 부탁드립니다.

좋은 하루 보내세요~

chozo99의 이미지

질문의 의도를 제대로 파악하지 못해 제 나름대로 적어 보겠습니다.
------------------------------------------
그런데 이 헤더내의 플래그값이 어떤건 검사만하고 어떤건 검사+리턴 되고 어떤건 리턴만 된다고 봤는데,

죄송하지만 무엇을 검사한다는 것인지..
(이건 플래그 값에 따라 대강은 알겠습니다.)
------------------------------------------
recvmsg 는 recv(read) 계열 함수로 소켓으로 부터 데이터를 받을때 사용합니다. 맨페이지에는 recvmsg 함수는 호출후 (소켓옵션이나 다른 설정에 의해서 기능이 조금씩 틀려짐) msghdr 의 내용을 세팅한다고 되어 있습니다.

리턴이란 함수호출을 마치고 돌아 왔다는 건데 ....
그리고 recvmsg의 처리과정이라고 함은 커널 내부 처리 과정을 말씀하신건지 .....

어쨌던 결론은 밑에 맨페이지를 보시고 이해안가는 부분을 물어 보시는게 빠를것 같습니다.

-> 영문 맨페이지

The msg_flags field in the msghdr is set on return of recvmsg(). It
can contain several flags:

MSG_EOR
indicates end-of-record; the data returned completed a record
(generally used with sockets of type SOCK_SEQPACKET).

MSG_TRUNC
indicates that the trailing portion of a datagram was discarded
because the datagram was larger than the buffer supplied.

등등...

-> 한글 맨페이지
msg_flags 필드는 받은 메세지에 따라 반환할 때 설정된다. MSG_EOR는 end-of-record를 나타낸다. 반환된 데이터가 레코드의 끝이다. (일반적으로 SOCK_SEQPACKET 형식의 소켓일 때 사용된다.) MSG_TRUNC는 데이터그램의 끝 부분을 버렸다는 것을 나타낸다. 왜냐하면 데이터그램이 제공되는 버퍼보다 크기 때문이다.

MSG_CTRUNC는 몇몇 제어 데이터들을 보조 데이터를 위한 버퍼 공간이 부족하기 때문에 버렸다는 것을 나타낸다. MSG_OOB는 급하거나 out-of-band 데이터를 받았다는 것을 가리키기 위해 반환된다. MSG_ERRQUEUE는 어떤 데이터도 받지 않았지만 소켓 오류 큐에서 오류가 확장되었다는 것을 나타낸다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.