Я создал многопроцессный клиент-сервер на языке c-unix.
Каждое соединение с клиентом управляется как дочерний процесс.
Когда происходит ошибка, я просто вызываю функцию выхода (EXIT_FAILURE), потому что я прочитал, что эта функция закрывает все открытые потоки.
Вопрос в том, должен ли я закрывать дескриптор сокета клиента, или закрытие происходит автоматически?
пример моего кода:
while(1){
if((client_sock=accept(ds_sock,&client,&s_client))==-1){
printf("Accept error\n");
exit(EXIT_FAILURE);
}
if(fork()==0){ //child
if((close(ds_sock)==-1)){
printf("Closing error\n");
exit(EXIT_FAILURE);
}
if((read(client_sock,&up,sizeof(userpass)))==-1){
printf("Error read\n");
exit(EXIT_FAILURE); //Does this instruction close the client_sock too?
}