udp 서버가 있는 데몬 프로그램을 실행 할 경우 희안한 문제가 있습니다.

kwonsu의 이미지

안녕하십니까.

프로그래밍 업무를 하면서 난해한 문제에 봉착하였습니다.

프로그래밍 관련 정보는 다음과 같습니다.

0. 컴파일 정보
- OS : Centos 6.6
- gcc : 4.4.7

1. 프로그램 설명
- 프로그램 A : fork 또는 daemon 함수를 사용하는 udp 서버 데몬 프로그램 (서버포트 1111)
프로그램 B : 프로그램 A를 시작 종료하는 udp 서버 데몬 프로그램 (서버포트 2222)
- 프로그램 A와 프로그램 B의 udp 서버 기능은 각각 독립적인 기능 수행

2. 실행순서
- 프로그램 B 실행
- 특정 조건을 만족하면 프로그램 A를 재시작
- loop로 실행중인 프로그램 B 종료

3. 현상
- 프로그램 B가 종료한 경우 프로그램 B가 사용했던 udp 서버 포트를 프로그램 A가 실행 중
- 프로그램 B 종료 전
udp 0 0 xxx.xxx.xxx.xxx:1111 0.0.0.0:* 23951/A
udp 0 0 xxx.xxx.xxx.xxx:2222 0.0.0.0:* 23949/B

프로그램 B 종료 후
udp 0 0 xxx.xxx.xxx.xxx:1111 0.0.0.0:* 23951/A
udp 0 0 xxx.xxx.xxx.xxx:1111 0.0.0.0:* 23951/A

프로그램 B 종료 방법은 signal 9 또는 3을 주어 종료를 하였고 signal 3일 경우 서버 socket을 닫게 하였습니다.

또한 프로그램 B는 ps 명령으로 확인 결과 종료됬음을 확인 하였습니다.

참고로 udp 서버 소켓을 열고 닫는 함수는 공통으로 사용하거나 각각의 프로그램에서 열어 사용하게 하여 테스트를 하였습니다.

위 현상은 무슨 현상이며 정상인지, 아니면 해결할 수 있는 방법은 무엇인지 고수님들의 고견 부탁드립니다.

감사합니다.

kwonsu의 이미지

다른 프로그램에서 다른 프로그램을 실행 할 경우 socket이 상속 된다는 점을 보지 못했습니다.

즉, 소캣을 생성 또는 소캣 디스크립터 번호를 close-on-exec으로 설정하여 사용해야 위 현상이 발생하지 않았습니다.

관심 가져주신 분들에게 감사하단 말씀 전해드립니다.

지식의 여인은 옷을 쉽게 벗지 않는다.
잡초인생. 잡초처럼 끈길기게....

Anti-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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.