[완료] setitimer 함수 와 connect 함수의 관계?

bluepuki의 이미지

time_value.it_interval.tv_sec = 0;
time_value.it_interval.tv_usec = 0;
time_value.it_value.tv_sec = 0;
time_value.it_value.tv_usec = CONNECT_INTR_VAL;

status = setitimer (ITIMER_REAL, &time_value, NULL);

status = connect (socket_fd, (const struct sockaddr*)&node_tcp_addr,
sizeof (struct sockaddr_in));
printf("[DEBUG] connect = %d \n ", status);

=======================================================

위와 같은 소스가 있습니다.

setitimer 함수가 connect 에 미치는 영향은 무었인가요?

CONNECT_INTR_VAL 값동안 connect 함수가 연결 대기하는건 가요?

CONNECT_INTR_VAL 값을 늘리니 connect 성공 하던데요.. ???

속도는 19200bps이고 선로 상태는 안좋은 전화선 에서 시험 했습니다.

감사합니다.

stypr의 이미지

ITIMER_REAL 로 지정을 하셨으니, 지정한 시간 후 SIGALRM 이 올 것입니다. connect(2) 함수가 어떤 값을 리턴하는지를 살펴보아야 하겠지만, 아마 connect(2) 함수내에서 signal 을 받고 EINTR 을 리턴하지 않았을까 생각됩니다.

bluepuki의 이미지

먼저 답변 감사합니다. ^^

지정한 시간 후에 SIGALRM 이 온다는것이 SIGALRM 이 오기전까지는 connect 함수가 동작 하지 않는건가요?
아니면 connect 함수가 실행되고 지정한 시간까지 연결 대기를 하는건가요?(지정시간까지 연결안되면 실패?)

궁금증을 정리해 보면

지정시간을 10초 했을때와 250ms 했을때 connect 함수가 어떤 영향을 받는건지가 궁금합니다.
지정시간을 10초 했을때는 connect 성공하고 250ms 했을때는 연결실패 했거든요~~

다시한번 답변 부탁드립니다. linux 프로그래밍 개념이 없어서... ㅡ.ㅡ

감사합니다.

stypr의 이미지

아닙니다. 아마도 SIGALRM 이 오기전까지 OS 는 connect(2) 함수를 열심히 실행하고 있었을 겁니다. 하지만 연결이 성공되기 전에 signal이 왔기 때문에 완료하지 못하고 그 상태에서 함수가 리턴된 것입니다.

10초로 했을 때는 충분한 시간이 주어졌기 때문에 성공하였고, 250ms때는 시간이 짧아서 연결 실패한 것입니다.

bluepuki의 이미지

아~ 역시 그렇군요...
기능은 되지만 원인을 명확히 알지 못해 찜찜했었는데..
큰 도움 되었네요.. ^^
감사합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.