Skip to content
Snippets Groups Projects
Select Git revision
  • 2e6064f23320ba677d7fdcf4a78fee2ca8ebef85
  • master default protected
  • revert-a279f36e
  • tag11-static-site
  • 10-404-clean
  • 08-simple-get|&&|09-404
  • 07-fdopen
  • 06-SIGCHLD
  • 05-fork1
  • 04-SIGPIPE
  • 03-REUSEADDR
  • 02-serveur-tcp-simple
  • 01-mise-en-place
13 results

main.c

Blame
  • main.c 945 B
    #include <stdio.h>
    #include <string.h>
    #include <signal.h>
    #include "socket.h"
    #include <sys/types.h>
    #include <sys/wait.h>
    int status;
    
    void traitement_signal(int sig) {
    	printf("Signal %d reçu\n", sig);
        int pid;
    	while((pid = waitpid(-1,&status,WNOHANG))>0){printf("pid terminated %d\n",pid);} //-1 n'importe quel proccessus
    }
    
    
    
    void initialiser_signaux(void) {
            if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) {
                    perror("signal");
            }
    	struct sigaction sa;
    	sa.sa_handler = traitement_signal;
    	sigemptyset(&sa.sa_mask);
    	sa.sa_flags = SA_RESTART;
    	if (sigaction(SIGCHLD, &sa, NULL) == -1) {
    		perror("sigaction(SIGCHLD)");
    	}
    }
    
    
    
    
    int main(int argc, char **argv) {
    	/* Arnold Robbins in the LJ of February '95, describing RCS */
    	if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
    		printf("Don't Panic!\n");
    	return 42;
    	}
    	initialiser_signaux(); 
    	printf("Need an advice?\n");
    	creer_serveur(8080);
    	return 0;
    }