Exemplo n.º 1
0
static void signalsetup(void)
{
	struct vt_mode vtm;
	vtm.mode = VT_PROCESS;
	vtm.waitv = 0;
	vtm.relsig = SIGUSR1;
	vtm.acqsig = SIGUSR2;
	vtm.frsig = 0;
	signalregister();
	ioctl(0, VT_SETMODE, &vtm);
}
Exemplo n.º 2
0
static void signalreceived(int n)
{
	if (exitit)
		return;
	/* racy, new signals may arrive before re-registeration */
	signalregister();
	switch (n) {
	case SIGUSR1:
		hidden = 1;
		switchterm(cterm(), cterm(), 0, 1, 0);
		ioctl(0, VT_RELDISP, 1);
		break;
	case SIGUSR2:
		hidden = 0;
		fb_cmap();
		switchterm(cterm(), cterm(), 1, 0, 1);
		break;
	case SIGCHLD:
		while (waitpid(-1, NULL, WNOHANG) > 0)
			;
		break;
	}
}
Exemplo n.º 3
0
Arquivo: server.c Projeto: saitej3/CN
int main(int argc, char *argv[])
{

    FD_ZERO(&readset) ;
  	popenFunc();		//incoming connections	
  	keyboardFunc();
  	pipeFunc();t 
  	fifoFunc();
    signalregister();

	struct sockaddr_in sAddr;
    int sfd;
    int nsfd;
    char buffer[25];
    int result;
    int nread;
    int x;
    int val;

    sfd = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
    val = 1;
    result = setsockopt(sfd,SOL_SOCKET, SO_REUSEADDR, &val,sizeof(val));
      if (result < 0) {
            perror("server1");
             return 0;
      }

    sAddr.sin_family = AF_INET;
  	sAddr.sin_port = htons(8898);  
  	sAddr.sin_addr.s_addr = INADDR_ANY;
    result = bind(sfd, (struct sockaddr*) &sAddr, sizeof(sAddr));
  	if (result < 0) {
    	perror("server1");
    	return 0;
  	}

   result = listen(sfd, 5);
   if (result < 0) {
     perror("server1");
     return 0;
   }

   FD_SET(sfd, &readset);

    while (1) 
    {

    testset = readset;
    result = select(FD_SETSIZE, &testset,NULL, NULL, NULL);
    if (result < 1) {
      perror("server1");
      return 0;
    }

    for (x = 0; x < FD_SETSIZE; x++) 
    {
        if (FD_ISSET(x, &testset))
        {

      	    if (x == sfd)
      	     {
                 	nsfd = accept(sfd, NULL,NULL);
          			FD_SET(nsfd, &readset);
             }

             else if(x==0 || x==pnrfd ||x==ffd || x==popenfd)
             {
                nread=read(0,buffer,sizeof(buffer));
                if(nread<=0)
                {
                	nread=read(pfd,buffer,sizeof(buffer));
                	if(nread<=0)
                	{
                		nread=read(ffd,buffer,sizeof(buffer));
                		if(nread<=0)
                		{
		                	nread=read(popenfd,buffer,sizeof(buffer));
                		}
                	}
                }

                for(i=0;i<nsfd_count;i++)
                {
                	send(nsfdarr[i],buffer,sizeof(buffer));
                }
                
             }
            else
            {
                  nread = recv(x, buffer, 25, 0);
                  if (nread <= 0)
                  {
                    close(x);
                    FD_CLR(x, &readset);
                    printf("client on descriptor #%i disconnected\n", x);
                  } 
                else
                 {
                    buffer[nread] = '\0';
                    printf("%s\n", buffer);
                    send(x, buffer, nread, 0);
                 }
            }
        }
    }
  }

 
}