connect 질문이요?

vilinux의 이미지

TCP 프로그램 하는중입니다.
환경은 리룩스 gcc 로 컴파일하고요

서버쪽에서는 클라이언트 쪽에서 들어올때마다 포크생성해서 통신하고요
클라이언트쪽 에서는 소켓 생성해서 데이터 를 샌드하고 잘받았는지
리시브 한다음에 리시브에서 에러나 머 키타 돌발 상황이 발생하면
리커넥 하게 해놨는데 문제는....
셀렉트 함수 써서 리스비 에러면 소켓을 close 하고 다시 소켓 생성
그다음에 커넥을 시도 하는데...............

소켓을 생성 하고 커넥을 하니까 서버쪽에서 프로세서를 계속 생성하게
되는데요 클라이언트쪽에서 소켓생성은 안하고 connect만 해야하는지??
궁금합니다.

또 서버쪽에서 클라이언트가 종료 하고 나갈때 프로세서를 죽여야 할것같은데
그냥 클라이언트 소켓만 close 하면 되는지 궁금합니당...

이두개 질문 답변좀 소스필요 하면 올려 드리겠습니다.

sunge의 이미지

짧은 지식으로나마...

소켓은 당연히 생성하고 컨넥트를 해야 합니다.
connect인자에 소켓구조체를 받게 되있는걸로 알고 있습니다.

fork는 자식프로세스를 생성하는 함수로 fork로 처리하셨다면 프로세서가 생성되는걸로 알고 있습니다.

fork로 생성된 자식프로세스는 루틴이 끝나면 자동으로 종료되는걸로 알고 있는데... 기억이.. -_-a;;

Simple is best, all of the time...
저거 맞나...

vilinux의 이미지

프로세서 생성 하고 클라이언트에서 종료 하고 나가면
서버쪽에서 ps 명령어 내려서 보면
생성된 자식 프로세서 stats 라는데에 z 로 표기 되어있던데..
않죽은프로 세서 stats 는 s 로 표기 되어있고요..

아이고 죽겄네 맨땅에 해딩하기~~~

leilei의 이미지

좀비는 부모 프로세스쪽에서 wait을 안해주기 때문입니다..
wait을 해 주시거나 SIG_IGN를 해 주세요

vilinux의 이미지

void	SigChld(int signo)
{
	pid_t	pid;			//pid_t 형은 int형이다.
	int	stat;
	
	while((pid = waitpid(-1, &stat, WNOHANG)) > 0);
	printf("child %d terminated\n", pid);		// Debug
	
	return;
}

main()
{
....
....

signal(SIGCHLD, SigChld);		// must call 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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.