소켓에서 fork했을때...

익명 사용자의 이미지

안녕하세요..처음으로 질문올려 봅니다..
Unix Network Programing 이란 책의 예제를 활용해서
TCP 소켓으로 서버와 클라이언트를 만들었습니다.
서버는 클라이언트의 요청이 들어오면 fork를 해서 자식
프로세서를 만들도록 했지요...

근데..클라이언트가 연결해서 데이타(구조체)를 서버에게
send/receive할때 서로 다른 메모리 영역이 잡히기 때문에
문제가 생기는 거 같습니다.
포크를 하지 않으면 변수값을 바꾸고 읽어오고 할 수 있는데
포크를 해 버리면 리소스가 공유가 안되는 문제가 생기더군요..
공유메모리를 써야 된다면 어떻게 해야 하는지...
어렵네요...
질문의 요지는 fork를 한 상태에서 리소스를 공유하는
간단한? 방법을 알고 싶습니다....
다른 분들은 어떻게 해결하는지 궁금하네요....
그럼....즐거운 하루 되시길~

익명 사용자의 이미지

man shmget

익명 사용자의 이미지


아래링크가 많이 도움이 되더군요.

http//www.lcg.org/sock-faq/

-0-;;;

익명 사용자의 이미지

안녕하세요

fork하게되면 완전히 다른 자원을 사용하는 프로세스가 생성됩니다
그렇기 때문에 자원을 공유하는 방법으로 공유메모리 가 있지요
동시에 공유메모리에 접근했을때 방생하는 문제를 해결하려면 세마포어가 있구요
음....무엇보다 문제는....
fork는....구형이라는거죠 ㅡㅡ;
새로운 프로세스를 생성하는건 상당한 자원을(물론 경우에 따라서) 허비하는결과를
초래합니다

sun1226의 이미지

unix시스템프로그래밍이란 홍릉과학출판사에서 나온것을 참고하시면
IPC에 관련된 massage queue,shared memory,그리고 세마포어까지
자세히 나와있습니다...

질문의 대답은 역시 shared memory를 사용하면 되겠지요

gaxital의 이미지

단지 리소스 공유가 문제라면
pthread를 사용해보지 그렇세여..
mutex_lock 으로 동기화 유지하고..

방가워~~ ^^*

댓글 달기

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