私のコードはどういうわけか次のようになります:
//INCLUDES
FILE *file;
void handlesocket(int socket);
int main(int argc, char *argv[])
{
openlog("daemon", LOG_PID, LOG_USER);
syslog(LOG_INFO, "daemon started.");
file = fopen("/var/log/daemon.log","a+");
fprintf(file,"Opened log file...");
while (1) {
pid = fork();
if (pid == 0) {
handlesocket(socket);
exit(0);
}
else close(socket);
}
}
void handlesocket(int socket)
{
//handle socket
}
基本的に、それは新しい接続を待ってから、それ自体をフォークします。(読みやすくするために、すべてのソケットコードを削除しました。
私の問題は、新しい接続が着信するたびに(そして、新しいfork()が呼び出されるたびに)、fprintf
が再び呼び出されるように見え"Opened log file..."
、ログに新しいものがあることです。
なぜこれが起こるのですか?