Interrupted system call 가 어떤 에러인지...
글쓴이: zombie007 / 작성시간: 목, 2003/10/30 - 9:29오전
안녕하세요...
Interrupted system call가 어떤 때에 나타나는 에러인지 궁금합니다..
참고로..
저는 지금 간단한 게임 서버를 만들어 테스트를 하고 있는데여..
listen 소켓이 하나있고 accept하는 client마다 thread를 생성하는 방식입니다..
하지만 지금 간단하게 클라이언트를 만들어서 접속 테스트를 해봤는데요..
클라이언트에서는 쓰레드를 1000개 생성하여 위의 게임 서버에 접속하는 거여..
그런데 서버에서는 255개의 쓰레드 생성후 Interrupted system call 이 에러를 내고 프로그램이 종료 됩니다...
왜 이런 현상이 일어 나는지 궁금합니다... 네트웍 문제인지 아니면 쓰레드 문제인지여.. 그럼 고수님들의 조언 부탁드립니다.....
Forums:
인터럽트된 시스템콜 : 시스템콜 실행중에 인터럽트 시그날을 받아서 시그날
인터럽트된 시스템콜 : 시스템콜 실행중에 인터럽트 시그날을 받아서 시그날 처리(디폴트 == 종료)가 되었단 얘기같군요.
일단 signal handler를 등록하셔야 될 듯... signal(SIGINT, SIG_IGN)해서 무시하시든지 아님 시그날 처리 루틴을 등록하셔야될거 같고요.
시스템콜 실행중에 시그날이 오면, 시그날 핸들러 실행후 자동으로 시스템콜을 재실행할 수도 있고 안할 수도 있는데.... 하실려는 작업에 따라 적당히 처리하시면 될 듯한데여.
더 자세한 건 스티븐스의 Advanced Programming in Unix Env.를 참고하세여.
Life is tragedy when seen in close-up, but a comedy in long-shot.
전에도 똑같은 질문을 하셨던구요.. 쓰레드 개수 제한 문제라고 생각됩니다
전에도 똑같은 질문을 하셨던구요.. 쓰레드 개수 제한 문제라고 생각됩니다.
http://bbs.kldp.org/viewtopic.php?t=26036&highlight=
답변 감사합니다.. 또 다시 질문 드립니다..
답변 정말 감사드립니다..
제가 아직 왕 초보라 개념이 없습니다.. ^^
그래서 스레드의 제한 갯수를 확인하는 방법을 잘몰라서여..
어떻게 확인을 하져?
전에 누군가가 Thread 개수를 늘리는 방법을 이 게시판에 올려놓았습니
전에 누군가가 Thread 개수를 늘리는 방법을 이 게시판에 올려놓았습니다. 한번 참고해보세요.
Redhat 7.3이상에서는 그 방법으로 해결이 안되라구요.. 만약 thread 개수를 늘릴려면 thread stack를 사이즈를 작게하시면 늘어날겁니다. 7.3에서는 thread stack size가 8M인걸로 기억이 되는데. 만약 이것을 1M를 줄이면, 255 * 8 개만큼의 스레드를 띄울수 있습니다.
thread의 stack 사이즈 값을 get, set 하는 함수는 posix thread 함수들을 찾아보시면 나올겁니다.
댓글 달기