파일 포인터를 못 가져와요 ㅠ.ㅠ

fenign의 이미지

SUN 환경에서 Unix C로 프로그래밍을 하고 있습니다.

통상 사용하는 fopen에서 문제가 발생해 속을 썩이네요 ;;

다음과 같이 사용하고 있습니다.

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

FILE *fpAA;
if((fpAA = fopen("aa.txt","a+")) == NULL)
{
printf(" error no : %d ", errno);
}

printf(" open fd : %d ", fpAA);
...
fprintf(~~~)
...

if(fpAA != NULL){
fprintf(fpAA, "\n");
fflush(fpAA);
printf(" close fd : %d ", fpAA);
fclose(fpAA);
}

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

이러한 소스를 계속적으로 반복합니다.
(데이터가 수신되면 호출 되어 저장하는 방식입니다.)

그런데 문제는...
20분간 정상적으로 파일 잘 열어서 쓰다가...
20분이 조금 지나면
파일 포인터를 못 가져온다는 errno 35를 찍어버리고는
그 이후로는 계속 errno 35를 찍으면서 저장을 못 하는 상황이 발생합니다.

위의 printf 문에서처럼 fd를 잘 가져오고 닫는지 검사해밨는데
에러 나기 직전까지 동일한 fd를 열고 닫고 하더라구요...

errno 35는 ENOMSG라는 에러던데...

무슨 문제가 발생한 걸까요...ㅠ.ㅠ

coremaker의 이미지

한 Process 당 열수 있는 file 수가 어떻게 설정되어 있는지 알 수 있을까요?

fenign의 이미지

파일을 사용하고 flose로 닫아 주는데도 프로세스당 열 수 있는 fd의 갯수가 중요한가요?
실제 printf로 찍어본 바로는 에러가 나기 전까지는 동일한 fd 값을 열고 닫고 하더라구요...

기본 설정에서 수정한게 없으니 dafault 값인 256으로 추정됩니다...
fd가 제한이 있다면 20분의 시간동안 정상적으로 종료되지 않은 fd값이 누적되어 에러가 발생할 수 있다고 추측할 수 있지만, 근본적인 해결책은 되지 않는것 같아서 다른 원인을 찾아보고 있습니다.

제시해준 방법도 간과하지 않고 열시미 삽질 해 보겠습니다 ^^
의견 감사드립니다~

coremaker의 이미지

본문을 자세히 보지 못했습니다...
순간 쓰레드를 사용하지 않나 싶어서.. 그런 생각을 하게 되었습니다..
도움이 되지 못해 죄송합니다...

익명사용자의 이미지

혹시 데이터를 받아오는 부분에 msgrcv를 쓰셨다면 가장 마지막 인자(msgflg)에 IP_NOWAIT 옵션을 주지 않고 호출해 보시기 바랍니다.

익명사용자의 이미지

IP_NOWAIT가 아니라 IPC_NOWAIT입니다.

fenign의 이미지

errno 35(ENOMSG)로 나는걸로 보아
메시지 수신쪽에 문제가 있는것 같았습니다...

삽질하고 결과 알려드리겠습니다 ^^
감사합니다~

댓글 달기

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