loginservd.c

来自「Linux环境登陆源码」· C语言 代码 · 共 51 行

C
51
字号
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <fcntl.h>
#include "myhead.h"

#define LISTEN_PORT 2099
#define LISTEN_QUEUE 10
#define DO_PROCESS "/mysrc/network/loginserver/logincheck"
int main(void)
{
   int sockfd;
   char ipbuf[]="192.168.8.11";
   if(daemon_init()<0)
      exit(-1);
   if((sockfd=socket_init(ipbuf, LISTEN_PORT)) < 0)
   {write(STDERR_FILENO, "socket init error!", 19);   exit(-1);}
   if(socket_listen(sockfd, LISTEN_QUEUE) < 0)
      exit(-1);
   while(1) 
   {
      int acceptfd;
      pid_t pid;
      struct sockaddr_in cliename;
      socklen_t len;
      len = sizeof(cliename);
      acceptfd = accept(sockfd, (struct sockaddr *)&cliename, &len);
      if((pid=fork()) < 0)
         exit(-1);
      else if(pid != 0)
      {
         int status;
         close(acceptfd);
         waitpid(pid, &status, WUNTRACED);
      }
      else
      {
	pid_t pid;
	if((pid=fork()) == 0)
	{
         close(sockfd);
	 execl(DO_PROCESS, "");
	}
	 else
	     exit(0);
      }
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?