리눅스 채팅프로그램에서 fork->execl로 파일전송프로그램 실행 후 문제가 있습니다
글쓴이: dpqltlskfk / 작성시간: 화, 2011/11/29 - 4:18오후
소켓 기반 채팅 프로그램을 만들었고 여기에 파일전송 기능을 추가 하고 있는데요
만들어져 있는 파일전송 소스를 구해서 그걸 fork로 분기 후 자식프로세스에서 execl로 독립실행하여 파일전송기능을 넣으려고 하는데요
채팅 서버에 접속 하고 사용자를 지정해서 파일 전송 명령어를 치면 파일전송까지는 잘 되는데요
그 후에 다시 채팅을 할 수 있어야 하는데 자식프로세스로 실행했음에도 불구하고 그냥 다 종료되고 쉘로 나와버리네요
그리고 파일전송을 안한 다른 접속자들도 다 접속이 끊기고 ㄷㄷ 서버가 죽어버리는 거 같네요
채팅에서 쓰는 소켓과 파일전송에서 쓰는 소켓이 프로그램 자체도 다른데 영향이 있는건가요?
포트번호도 다른데 거 참 이상하네요 어떻게 해야될지 ㅠ
Forums:
답변이 없다 ㅠ
ㅠㅠ
이걸보고 어찌 답변을 달까요..."컴퓨터가
이걸보고 어찌 답변을 달까요...
"컴퓨터가 안켜져요" 하면 "정전인지, 전원코드 꽂혀있는지, 파워가 불량인지, 케이블이 불량인지, 메인보드 연결케이블 꽂혀있는지부터 확인해보시구요, 다 정상이면..." 이런 답변이 달릴수도 있지만 보통은 그냥 무시당하겠죠...
해당하는 부분 코드라도 있으면 읽어나 볼텐데요.
fork시에 자식/부모 프로세스 구분을 잘 했는지, 전송 완료되었을때 어떤 코드가 실행되는지부터 확인해보세요.
자체 해결 했네요
문제는 좀비프로세스를 막기 위해 자식프로세스가 죽을때 실행되게 만들었던 핸들러 함수에 있었네요
아무 자식프로세스나 죽으면 바로 종료되게 만들어놔서 죄다 죽어버린거였어요
프로세스 구별해서 원하는 프로세스가 죽었을때만 전체 종료 되게 해놨더니 잘 돌아가네요 ㅎ
댓글 달기