void main(void) { printf( "current pid %d\n", (int)getpid()); daemonify(); printf( "current pid post demonization %d\n", (int)getpid()); printf( "parent pid post demonization %d\n", (int)getppid()); /* give client a chance to properly shutdown */ }
static int init(int argc, char **argv, struct animation *banner) { int i; struct string_list *filenames = NULL, *filenames_tail = NULL; int filenames_count = 0; init_log(); i = get_options(argc, argv); if (i < 0) return usage(argv[0], NULL); for ( ; i < argc; ++i) { if (banner->interval == (unsigned int)-1) if (!parse_interval(argv[i], &banner->interval)) continue; filenames_tail = string_list_add(&filenames, filenames_tail, argv[i]); if (!filenames_tail) return 1; else filenames_count++; } if (!filenames_count) return usage(argv[0], "No filenames specified"); if (fb_init(&_Fb)) return 1; if (init_proper_exit()) return 1; if (animation_init(filenames, filenames_count, &_Fb, banner)) return 1; string_list_destroy(filenames); if (banner->frame_count == 1 && RunCount == 1) banner->interval = 0; /* Single frame, exit after showing it */ else if (banner->interval == (unsigned int)-1) banner->interval = 1000 / 24; /* 24fps */ if (!Interactive && daemonify()) ERR_RET(1, "could not create a daemon"); return 0; }
int main (int argc, char **argv) { int optind = 0; int ret; tzset(); srand(time(NULL)); if (getarg (args, sizeof(args)/sizeof(*args), argc, argv, &optind)) usage (1); argc -= optind; argv += optind; if (help_flag) usage (0); if (version_flag) { print_version (NULL); exit (0); } if (argc > 0) { device_file = *argv; argc--; argv++; } if (argc != 0) usage (1); if (!fork_flag) default_log_file = _PATH_DEV_STDERR; if (fork_flag) daemonify (); ret = arla_init(); if (ret) return ret; arla_start (device_file, cache_dir); return 0; }