From: chas w. <ch...@us...> - 2003-05-02 17:19:44
|
Update of /cvsroot/linux-atm/linux-atm/src/led In directory sc8-pr-cvs1:/tmp/cvs-serv29666 Modified Files: Tag: V2_5_0 main.c Log Message: add -b (daemon flag) option -- this should make startup scripts somewhat easier to write. the lec interface will be before the zeppelin forks the child so you no longer need to sleep after starting zeppelin before configuring the interface Index: main.c =================================================================== RCS file: /cvsroot/linux-atm/linux-atm/src/led/main.c,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** main.c 9 Oct 2001 22:33:07 -0000 1.2 --- main.c 2 May 2003 17:19:41 -0000 1.2.2.1 *************** *** 198,201 **** --- 198,203 ---- int lecs_method = LECS_WELLKNOWN; int poll_ret = 0, itf = 0, phys_itf = 0, selector = 0; + int daemon_flag = 0; + pid_t pid; struct sockaddr_atmsvc manual_atm_addr; struct sockaddr_atmsvc listen_addr; *************** *** 211,216 **** while(poll_ret != -1) { ! poll_ret = getopt(argc, argv, "c:e:n:s:m:l:i:I:q:12pf:t:F:"); switch(poll_ret) { case 'c': if (atm_set) { --- 213,221 ---- while(poll_ret != -1) { ! poll_ret = getopt(argc, argv, "bc:e:n:s:m:l:i:I:q:12pf:t:F:"); switch(poll_ret) { + case 'b': + daemon_flag = 1; + break; case 'c': if (atm_set) { *************** *** 389,392 **** --- 394,416 ---- return -1; } + + if (daemon_flag == 1) { + daemon_flag = 0; + pid = fork(); + if (pid < 0) { + diag(COMPONENT, DIAG_FATAL, "fork failed, exiting...\n"); + return -1; + } + if (pid) { + /* parent */ + return 0; + } else { + /* child */ + if (setsid() < 0) { + diag(COMPONENT, DIAG_FATAL, "setsid failed, exiting...\n"); + return -1; + } + } + } diag(COMPONENT, DIAG_DEBUG, "initializing lec parameters\n"); |