crabs_usbmgr-1.0.3 ©2004-2006 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)
1 /* 2 **============================================================================= 3 ** crabs_usbmgr-1.0.3 : Universal Serial Bus MaNaGer 4 ** Copyright (C) 2004-2006 : Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com) 5 ** 6 ** Ce source fait partie d'un projet logiciel libre. Vous pouvez le distribuer 7 ** et/ou le modifier en respectant les termes de la GNU General Public License 8 ** version 2 ou (suite a votre propre choix) une version ulterieure. 9 ** 10 ** Ce programme est distribue dans l'espoir qu'il puisse etre utile, mais 11 ** sans aucune garantie, meme si il est associe a un produit qui vous en 12 ** propose une. Conformez-vous a la GNU General Public License pour avoir 13 ** plus de precisions. 14 ** 15 ** L'auteur ne peut etre tenu responsable de l'utilisation faite des 16 ** composantes associees a ce projet (en partie ou dans leur totalite). 17 ** 18 ** Une copie du fichier de la GNU GPL est fournie dans le repertoire DOC 19 ** de ce projet sous le nom gnu_gpl.txt 20 ** 21 **============================================================================= 22 */ 23 #include <sys/types.h> 24 #include <syslog.h> 25 #include <errno.h> 26 #include <string.h> 27 #include <stdio.h> 28 #include <fcntl.h> 29 30 #include <syssock.h> 31 32 int be_a_daemon( const char *name, char *err ) 33 { 34 pid_t pid ; 35 36 switch ( pid = fork () ) 37 { 38 case -1 : 39 fprintf( stderr, "%s:fork():%s", name,strerror(errno) ); 40 exit (1) ; 41 case 0 : 42 break ; 43 default : 44 printf( "%s starting (%u)\n", name, pid ); 45 exit( 0 ); 46 } 47 openlog ( name, LOG_PID | LOG_CONS, LOG_DAEMON ) ; 48 49 if ( (close(0)==-1) || (close(1)==-1) || (close(2)==-1) ) 50 { 51 sprintf( err, "close():%s", strerror(errno) ) ; 52 return -1 ; 53 } 54 if ( open ( "/", O_RDONLY ) == -1 ) 55 { 56 sprintf( err, "open(/):%s", strerror(errno) ) ; 57 return -1 ; 58 } 59 if ( (dup2(0,1)==-1) || (dup2(0,2)==-1) ) 60 { 61 sprintf( err, "dup():%s", strerror(errno) ) ; 62 return -1 ; 63 } 64 if ( setsid() == -1 ) 65 { 66 sprintf( err, "setsid():%s", strerror(errno) ) ; 67 return -1 ; 68 } 69 return 0 ; 70 }
Date de génération : 22/09/2011 21:48