---つづき
  GetStartupInfo(&startupinfo);
  if (! CreateProcess(
    s_app, NULL, NULL, NULL, FALSE,
    CREATE_DEFAULT_ERROR_MODE, NULL, NULL,
    &startupinfo, &processinfo)) {
    fprintf(stderr, "failed to create process.\n");
    return 1;
  }

  hProcess = processinfo.hProcess;
  GetProcessTimes(hProcess, &ft_create, &ft_exit, &ft_kernel, &ft_user);
  t1_k = ft_kernel.dwLowDateTime;
  t1_u = ft_user.dwLowDateTime;
  for (;;) {
    DWORD exitcode;
    Sleep(100);
    if (! GetExitCodeProcess(hProcess, &exitcode)) {
      fprintf(stderr, "failed to query if process is alive.\n");
      return 1;
    }
    if (exitcode != STILL_ACTIVE) {
      break;
    }
  }
---つづく