Я собираюсь написать TCP-сервер (Socket-Linux-C). У меня есть три вопроса:Три вопроса для создания TCP-сокета, Linux с C
1) Для того, чтобы узнать, отключена ли сеть (или подключение), воспользуемся ли вы опцией SO_KEEPALIVE
?
Например:
int optval = 1;
socklen_t optlen = sizeof(optval);
if (setsockopt(file_descriptor,SOL_SOCKET,SO_KEEPALIVE,&optval,optlen)<0) {
Close(file_descriptor);
Print_error("setsockopt() failed");
2) Я хочу, чтобы мой сервер контактов другой сервер. Как мой сервер знает, выключено ли на удаленном сервере?
3) Я хочу написать параллельный сервер и поэтому я использую fork()
для того, чтобы создать ребенка:
3,1) Я должен обрабатывать одновременный доступ к общим переменным, даже если они предназначены только для чтения цели?
3.2) У меня не будет зомби в моем списке процессов ... Может ли этот код быть прав?
void sigchld_h (int signum);
int main(int argc, char *argv[]){
...;
}
void sigchld_h (int signum){
pid_t pid;
int status;
while ((pid = waitpid(-1,&status,WNOHANG)) > 0)
printf("(%s) INFO - child %d terminated with exit status %d", nome_programma, pid, status);
}
Большое спасибо за консультацию.
Я думаю, что это слишком широкий охват, это не один вопрос (или даже три, как он утверждает). – unwind