소켓프로그래밍 fork에 대하여 질문 있습니다!!!

pokjoo23의 이미지


요즘 TCP/IP 소켓 프로그래밍 책을 열심히 보면서 공부중인 학생입니다 :-)

이번에 해보려고 하는게,
fork를 사용하여 자식프로세스를 생성하는데,
클라이언트가 10개 이상이 되면 더이상 fork 를 생성하지 않고, 클라이언트에 연결요청 실패를 전달하고
클라이언트를 종료합니다.

클라이언트 종료는 클라이언트 프로그램 자체에서 exit(1)을 사용해서 했는데,
여기서 문제가 자식 프로세스가 10개만 생성한다고 했을때,
부모프로세스에서 fork가 한번 호출될때마다 변수를 하나 선언해서 그 값을 올려주고,
그 값이 10 이상이 되면 연결요청 실패를 말하면 되잖아요~

근데, 만약 클라이언트에서 연결을 끊었을때는 이제 9개의 연결이기때문에,
한자리가 비어서 fork 하나를 더 생성할수 있어야 하는데,

부모프로세스가 가지고 있는 변수와 자식프로세스는 다른 메모리에 있기때문에 공유가 안되잖아요!

그러면 어떻게 해야 할까요?
한마디로 한가지 값을 공유해야 하는데, 그게 파이프라는 이야기를 들었습니다.
파이프 말고는 다른 방법은 없나요?

또, 파이프로 메모리를 공유했더니,
다른 2번째 클라이언트부터는 접속이 되지 않다가, 첫번째 클라이언트가 접속을 종료해야 접속이 됩니다. ㅡㅡ;
메모리를 공유하게되면 모든 자식프로세스와 공유할수는 없는건가요?
한번에 10개가 접속이 되는게 목표인데; 이건뭐.. ㅡㅡ 결국은 한개한개가 접속되는 상황이니 ..;

그리고! 또 궁금한게 있는데, listen(serv_sock,5) 함수가 있잖아요?
이게 연결요청대기상태라는 하는데 ㅡㅡ; 여기서 5는 왜 쓰이나요!!
제가 0도 해봤고, 1도해봤고, 다 해봤는데 무조건 접속이 됩니다 ;
숫자는 뭘 의미하는건가요? ㅜㅜ

Seydlitz의 이미지

자식 프로세스가 끝났을때 보내는 신호를 받아서 처리하시면 될겁니다
wait또는 waitpid를 참고하세요

모두를 위한 하나이지만, 하나를 위한 모두이지는 않다.

댓글 달기

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