我的代码看起来像这样:
//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..."
我的日志中有一个新的连接。
为什么会这样?