blob: 5eaaa535c21102137b62ace9f52b8380605908d8 [file] [log] [blame]
/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include "nsutils.h"
#include "util.h"
int main(void) {
pid_t pid;
int pipe_fds[2];
char ch;
pipe(pipe_fds);
if (-1 == try_setup_ns(CLONE_NEWPID)) {
/* We may not have permission to set up namespaces, so bail. */
atomic_puts("Insufficient permissions, skipping test");
atomic_puts("EXIT-SUCCESS");
return 77;
}
signal(SIGTERM, SIG_IGN);
/* Print this now because we will get killed */
atomic_puts("EXIT-SUCCESS");
/* This is the first child, therefore PID 1 in its PID namespace */
pid = fork();
test_assert(pid >= 0);
if (!pid) {
int i;
for (i = 0; i < 20; ++i) {
pid = fork();
if (!pid) {
/* The grandchild just sleeps */
pause();
}
test_assert(pid == i + 2);
}
write(pipe_fds[1], "x", 1);
pause();
}
read(pipe_fds[0], &ch, 1);
return 0;
}