file sharing

swhong의 이미지

문제는 다음과 같습니다.

파일을 미리 읽기와 쓰기 모드로 각각 열어 놓습니다.
먼저 쓰기 디스크립터를 통해 파일에 내용을 씁니다.
그리고 나서 이미 열어놓았던 읽기 디스크립터를 통해 파일의 내용을 읽어봅니다. 방금전에 쓴 내용이 읽혀오지 않습니다.

읽기로 연 화일이 업데이트 되었을때 업데이트된 내용을 읽어오려면 어떻게 해야 하죠?

moonzoo의 이미지

파일에 쓴 후에 fflush 를 하시면 될것 같습니다.

file write 할때마다 디스크에 쓰는 것이 아니라

먼저 버퍼에 여러번 써놓고.. 한번에 디스크로 flush하는데

이것을 강제로 하는 역할을 하는 것이 fflush입니다.

man fflush해보세여..

지금 pc방인 관계로 확인을 못해봤는데..

잘못된 대답이라면..다른 분들이 말씀해주세여..

swhong의 이미지

fflush 해주어야 한다.
이것은 유닉스계열 혹은 리눅스의 파일 시스템 구조상 각 프로세스는 자신이 오픈한 디스크립터 테이블을 유지하고 있고 디스크립터 테이블에는 file table에 대한 포인터를 유지한다. 파일 테이블에는 파일 옵셋과 v-node 테이블에 대한 포인터가 있고 이 v-node table에는 파일의 length나 i-node정보를 유지하면서 공유하게 된다.

조금 복잡하게 설명했으나, 즉 각 화일 디스크립터는 옵셋만을 각각 다르게 유지하고 파일 정보(길이,inode정보)는 공유한다는 것이다.

그러므로 구조상 업데이트 된 내용을 읽어볼 수 있다. 하지만, 모든 파일 시스템이 그러한 것은 아니다. 즉, 파일 정보를 공유하지 않는 파일 시스템도 있다는 것이다.

감사합니다.

- by swhong in jgdr.net -

pynoos의 이미지

fopen, fwrite, fputs 등으로 사용하는 것은 kernel level 구현과는 거리가 좀 있습니다. 이들 함수는 c library 안에 있는 것입니다.

따라서, fflush 도 kernel 상에서 쓰기지연된것을 강제로 기록하는 것이 아니라, user level에서 쓰기 지연된 즉, c library 내의 buffer에서 지연되고 있는 것에 대해 flush를 하는 것입니다.

bufferred i/o 를 c library 상에서 표준화한것이므로, 대부분의 구현에서 위와 같은 현상이 나타나지리라 보입니다.

댓글 달기

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