Universal Serial Bus MaNaGer

crabs_usbmgr-1.0.3 ©2004-2006 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)

libslw_inet.a~~ / INET / daemon.c
Makefile syssock.h daemon.c serv_tcp_simple.c serv_connect.c sock_read.c sock_write.c
    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     }
Makefile syssock.h daemon.c serv_tcp_simple.c serv_connect.c sock_read.c sock_write.c
libslw_inet.a~~ / INET / daemon.c

Haut de page

Contacter crabs

Date de génération : 22/09/2011 21:48