Apple / BSD: статус = 2943 от ожидания? - PullRequest
0 голосов
/ 09 июня 2011

Я отслеживаю процесс.После fork / execl, а затем wait на дочернем объекте, я получаю состояние 2943. Я проверяю на сбой, но waitpid сообщает о сбое.Я посмотрел в <sys/wait.h>, но значение не определено и не представляется битовой маской.

Любые идеи о том, где я должен смотреть?

int DoParentProcess(int childPid)
{
  int err, ret, status;

  for( ; ; )
  {
    ret = waitpid(childPid, &status, 0);
    err = errno;

    ///////////////////////////////////////

    if(ret == -1)
    {
      cerr << "Failed to wait on child process, errno = " << err << endl;
      return err;
    }

    ///////////////////////////////////////

    cout << "Parent: wait status = " << status << endl;

    if(WIFEXITED(status))
      break;

    ///////////////////////////////////////

    ret = ptrace(PTRACE_CONT, childPid, 0, 0);
    err = errno;

    if(ret == -1)
    {
      cerr << "Failed to continue child process, errno = " << err << endl;
      return err;
    }
  }

  return 0;
}

1 Ответ

1 голос
/ 04 июля 2011

Значение из waitpid не должно использоваться напрямую. Вместо этого предоставленные макросы должны использоваться для извлечения соответствующих битов. Например, WIFEXITED, WEXITSTATUS и WTERMSIG.

...