Exemplo n.º 1
0
static void TestGetPidCachingWithFork(int (*fork_fn)()) {
  pid_t parent_pid = getpid();
  ASSERT_EQ(syscall(__NR_getpid), parent_pid);

  pid_t fork_result = fork_fn();
  ASSERT_NE(fork_result, -1);
  if (fork_result == 0) {
    // We're the child.
    AssertGetPidCorrect();
    ASSERT_EQ(parent_pid, getppid());
    _exit(123);
  } else {
    // We're the parent.
    ASSERT_EQ(parent_pid, getpid());
    AssertChildExited(fork_result, 123);
  }
}
Exemplo n.º 2
0
TEST(unistd, getpid_caching_and_fork) {
    pid_t parent_pid = getpid();
    ASSERT_EQ(syscall(__NR_getpid), parent_pid);

    pid_t fork_result = fork();
    ASSERT_NE(fork_result, -1);
    if (fork_result == 0) {
        // We're the child.
        AssertGetPidCorrect();
        ASSERT_EQ(parent_pid, getppid());
        _exit(123);
    } else {
        // We're the parent.
        ASSERT_EQ(parent_pid, getpid());

        int status;
        ASSERT_EQ(fork_result, waitpid(fork_result, &status, 0));
        ASSERT_TRUE(WIFEXITED(status));
        ASSERT_EQ(123, WEXITSTATUS(status));
    }
}
Exemplo n.º 3
0
static void TestGetPidCachingWithFork(int (*fork_fn)()) {
  pid_t parent_pid = getpid();
  ASSERT_EQ(syscall(__NR_getpid), parent_pid);

  pid_t fork_result = fork_fn();
  ASSERT_NE(fork_result, -1);
  if (fork_result == 0) {
    // We're the child.
    AssertGetPidCorrect();
    ASSERT_EQ(parent_pid, getppid());
    _exit(123);
  } else {
    // We're the parent.
    ASSERT_EQ(parent_pid, getpid());

    int status;
    ASSERT_EQ(fork_result, waitpid(fork_result, &status, 0));
    ASSERT_TRUE(WIFEXITED(status));
    ASSERT_EQ(123, WEXITSTATUS(status));
  }
}
Exemplo n.º 4
0
static void* GetPidCachingPthreadStartRoutine(void*) {
  AssertGetPidCorrect();
  return NULL;
}
Exemplo n.º 5
0
static int GetPidCachingCloneStartRoutine(void*) {
  AssertGetPidCorrect();
  return 123;
}