int main(int argc, char *argv[]) { g_argc = argc; g_argv = argv; signal(SIGHUP, (void (*)(int)) HUP_handler); int pid = fork(); // by http://mainloop.ru/c-language/kak-sozdat-demona-v-linux.html switch (pid) { case -1: syslog(LOG_WARNING, "%s\n", "Error: can't start daemon"); exit(1); case 0: setsid(); chdir("/"); close((int) stdin); close((int) stdout); close((int) stderr); start_programs(); exit(0); default: return 0; } }
void HUP_handler() { for (int i = 0; i < proc_numbers; i++) { if (pid_list[i] > 0) { kill(pid_list[i], SIGKILL); } } start_programs(); }
launcher_main(void) #endif { OBJECT * desktop_bg; OBJECT * menu; int ap_id; /* Pdomain (1); FIXME decide where to put this */ /* Get application id */ ap_id = appl_init(); /* Fix resource data */ rsrc_rcfix(launch); /* Get address of desktop background */ rsrc_gaddr(R_TREE, DESKBG, &desktop_bg); /* Set desktop background */ wind_set(0, WF_NEWDESK, HI_WORD(desktop_bg), LO_WORD(desktop_bg), 0, 0); /* Get address of the menu */ rsrc_gaddr(R_TREE, MENU, &menu); /* Install menu */ menu_bar(menu, MENU_INSTALL); /* Register launcher as "oAESis" */ menu_register(ap_id, " oAESis"); graf_mouse(ARROW, 0L); start_programs(); updatewait(); appl_exit(); return 0; }