コード例 #1
0
ファイル: main.c プロジェクト: savichev-igor/OS
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;
    }
}
コード例 #2
0
ファイル: main.c プロジェクト: savichev-igor/OS
void HUP_handler() {
    for (int i = 0; i < proc_numbers; i++) {
        if (pid_list[i] > 0) {
            kill(pid_list[i], SIGKILL);
        }
    }

    start_programs();
}
コード例 #3
0
ファイル: launcher.c プロジェクト: e8johan/oaesis
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;
}