예제 #1
0
파일: waitpid11.c 프로젝트: kamiccolo/ltp
static void do_child_1(void)
{
	pid_t pid, group;
	int i;

	group = SAFE_GETPGID(0);

	for (i = 0; i < MAXKIDS; i++) {
		if (i == (MAXKIDS / 2))
			SAFE_SETPGID(0, 0);

		pid = SAFE_FORK();
		if (pid == 0)
			do_exit(0);

		fork_kid_pid[i] = pid;
	}

	TST_CHECKPOINT_WAKE2(0, MAXKIDS);

	if (reap_children(0, 0, fork_kid_pid + (MAXKIDS / 2), MAXKIDS / 2))
		return;

	/* Make sure can pickup children in a diff. process group */
	if (reap_children(-group, 0, fork_kid_pid, MAXKIDS / 2))
		return;

	tst_res(TPASS, "Test PASSED");
}
예제 #2
0
파일: waitpid10.c 프로젝트: kraj/ltp
static void do_child_1(void)
{
	pid_t pid;
	int i;

	for (i = 0; i < MAXKIDS; i++) {
		pid = SAFE_FORK();
		if (pid == 0) {
			if (i == 0 || i == 1)
				do_exit(0);

			if (i == 2 || i == 3)
				do_compute();

			if (i == 4 || i == 5)
				do_fork();

			if (i == 6 || i == 7)
				do_sleep();
		}

		fork_kid_pid[i] = pid;
	}

	TST_CHECKPOINT_WAKE2(0, MAXKIDS);

	if (TST_TRACE(reap_children(0, 0, fork_kid_pid, MAXKIDS)))
		return;

	tst_res(TPASS, "Test PASSED");
}
예제 #3
0
파일: execve05.c 프로젝트: kraj/ltp
static void verify_execve(void)
{
	int i;

	for (i = 0; i < nchild; i++) {
		if (SAFE_FORK() == 0)
			do_child();
	}

	TST_CHECKPOINT_WAKE2(0, nchild);
}
예제 #4
0
파일: waitpid12.c 프로젝트: 1587/ltp
static void do_child_1(void)
{
	pid_t pid, group;
	int i;
	int status;

	group = SAFE_GETPGID(0);

	for (i = 0; i < MAXKIDS; i++) {
		if (i == (MAXKIDS / 2))
			SAFE_SETPGID(0, 0);

		pid = SAFE_FORK();
		if (pid == 0)
			do_exit(0);

		fork_kid_pid[i] = pid;
	}

	if (TST_TRACE(waitpid_ret_test(0, &status, WNOHANG, 0, 0)))
		return;

	if (TST_TRACE(waitpid_ret_test(-group, &status, WNOHANG, 0, 0)))
		return;

	TST_CHECKPOINT_WAKE2(0, MAXKIDS);

	if (TST_TRACE(reap_children(0, WNOHANG, fork_kid_pid + (MAXKIDS / 2),
				    MAXKIDS / 2)))
		return;

	if (TST_TRACE(reap_children(-group, WNOHANG, fork_kid_pid,
				    MAXKIDS / 2)))
		return;

	tst_res(TPASS, "Test PASSED");
}