TCP サーバー (Socket - Linux - C) を作成します。3 つの質問があります。
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);
}
ご相談ありがとうございました。