파일 입출력시 횟수에 제한이 있는지요.

tandem의 이미지

suse 9.1사용자입니다.

동영상을 읽어서 처리하는 프로그램인데요,
한 프레임씩 읽을때마다
내부적인 로직에 의해서 텍스트파일들이 새로 생성되거나,
기존파일들을 update하게 됩니다.
결과적으로 한 프레임당
해당되는 텍스트파일들에 대해 fopen, fclose를 20~30 회 정도
해 주게 되는데요,
프로그램이 300프레임을 넘어가면, 세그멘테이션 오류가 나는데,
이유가 새로운 파일을 생성하지 못하기 때문입니다.

FILE *out = fopen("test.dat", "w")

이런식이라고 한다면 out=NULL이 되어버리는 것이죠.

파일 입출력 횟수가 너무 많이 반복되어서 그럴수도 있는지요?

도움 부탁드립니다.

bugiii의 이미지

fclose 는 안하시나보죠?

tandem의 이미지

아니요.. fclose는 꼭 해주고 있는데요..

fox9의 이미지

짧은시간에 많은 파일을 여시는듯 한데
오픈된 파일이 너무 많이서 그런것 아닐까요?
확인해 보시고 파일수를 늘려주세요.

feelpassion의 이미지

한 프로세스 당 file descriptor 숫자가 32개로 제한되어있는 걸루 알고 있습니다. 것두 DESCRIPTOR_MAX 뭐 이런걸루 제한되어있겠죠... (저도 자세히는 모르겠습니다.)

남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.

FruitsCandy의 이미지

파일 디스크립터의 limit를 보시길 바랍니다.

ulimit -a <-- 솔라리스 명령인데 리눅스에서도 맞는지 모르겠습니다.

대개 리눅스 배포판의 파일 디스크립터 수는 1024인걸로 알고 있는데요.

영상 처리를 하는 중 fopen에서 (아직 닫히지 않은 디스크립터 + 열려 있는

디스크립터)의 수가 max를 넘어서지 않을까 싶습니다.

예전에 솔라리스 5.7에서 서버를 짜다가 일정수 클라이언트가 접속시 님과

같은 문제가 발생한 적이 있었습니다. 디스크립터의 max가 64더군요.

파일디스크립터의 limit 문제일 수도 있으니 한번 확인해 보세요.

open할때 카운터 변수+1 , close 할때 카운터 변수-1 하시면서 디버깅

해보시면 도움이 되지 않을까요.

아.. limit는 변경하실 수 있습니다. getrlimit , setrlimit를 사용하시면 됩니다.

아지랑이류 초환상 공콤 화랑... 포기하다.. T.T

댓글 달기

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