[알려주세요ㅠㅠ] 여러 프로세스들이 하나의 파일을공유할때???

dorijjang의 이미지

제가 하고자하는 프로그램은

여러 프로세스들이 각기 다른 번호를 할당받아야 하는데요

즉,
프로세스1은 1~5번까지
프로세스2은 6~10번까지
프로세스3은 11~20번까지
....
....
프로세스50은 95~100번까지

이런식으로 각각의 프로세스들이 중복없이 해당하는 번호대를
순서적으로 할당받아야합니다.

그래서 하나의 파일에 이런 순서를 기록하는 방식으로
프로세스 1이 파일을 읽고(1을 읽고) 쓰고(5를 쓰고) 그리고
다음
프로세스 2가 파일을 읽고(6을 읽고) 쓰고 (10를 쓰고)
이런식으로 구현을 할려고 생각중인데...

이렇게 구현할려다보니...

여러프로세스가 한 파일을 건드리게 되는경우,

한 프로세스가 쓸때 다른 프로세스가 못 읽게 해야 되자나요?

그럴때 어떤 방법이 없나요??

세마포어, fcntl 레코드잠금 등등 여러 방법을 생각해 보았는데...

답이 안나오네요? 어떤 방법이 있을까요?

saxboy의 이미지

답을 다 알고 계신 것 같은데 왜 답이 나오질 않는 건지 잘 모르겠네요. :-)

record locking이 그나마 좀 편하고 쓸만할 것 같다는 생각이 듭니다만..

nthroot의 이미지

레코드 락 쓰시면 될것 같네요.

man lockf

F_TLOCK

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

yui의 이미지

dorijjang wrote:
제가 하고자하는 프로그램은

여러 프로세스들이 각기 다른 번호를 할당받아야 하는데요

즉,
프로세스1은 1~5번까지
프로세스2은 6~10번까지
프로세스3은 11~20번까지
....
....
프로세스50은 95~100번까지


이런 목적이라면 프로그램의 첫번째 인자로 시작 숫자를 받게 하고
$ cat run
./process 1
./process 6
...
./process 96

이런 식으로(물론 for문 돌려서요) 스크립트 돌리는게 훨씬 편하지 않을까요?

아니면 하나의 프로세스에서 20개의 프로세스를 포크하고 그때 전역변수에 시작 번호를 적어둬도 될테고... 이건 좀 아니군요.

레코드락이 불편하시면 다른 방법도 한번 고려해보세요~

댓글 달기

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