웹 브라우저를 사용하여 프로그램을 테스트 할 때 socket/FD에 쓸 수 있기 때문에 루프를 돌리고 연결 중간 연결을 끊어서 문제를 발견했습니다. send()는 소켓을 사용할 수 없을 때 전체 프로그램을 닫을 수 있습니다. 문제는 프로그램이 캐치 22에 붙잡혀 스스로 닫히는 문제라고 생각했습니다. 그래서 소켓을 차단하지 않도록 설정했습니다. 변경 없음. 왜 이런 일이 일어 났는지에 대한 아이디어가 있습니까?send() problem
else if (b->temp_socket_list[read].revents & POLLOUT) {
printf ("#Write#\n");
char *done = "Done!";
int sent = send (sock, done, 5, 0);
printf ("end\n", sent);
}
포스트 보여주는 몇 가지 코드를 :
또한 프로그램 (또는 단지 현재의 thread)
SIGPIPE
의 사용을 원하지 않는 경우, 당신은 단지 영구적으로 차단SIGPIPE
를 떠나하여이 많이를 단순화 할 수 있습니다 그 행동. – NPE그리고'strace'를 프로그램과 함께 실행하면 실제로 일어나는 일을 볼 수 있습니다. –
@Roland +1. 몇 달 전에 프로세스가 SIGPIPE를 얻는 것을 알 수있는 유일한 방법이었습니다. 그것은 단순히 시스템 초기화 직후에 죽는 것처럼 보였습니다. 대체 해결책은 – Jeff