C 强制先运行父进程

C 强制先运行父进程,c,linux-kernel,operating-system,fork,C,Linux Kernel,Operating System,Fork,在我的系统(Opensuse)上,默认情况下,子进程总是在fork之后首先执行。还有一些方法可以强制子进程先运行。我想知道是否有办法强制先运行父进程?您可以使用此方法 pid_t pid = fork(); if (pid == -1) abort(); else if (pid == 0) { raise(SIGSTOP); // stop the child } else { waitpid(pid, NULL, WUNTRACED); // wait unti

在我的系统(Opensuse)上,默认情况下,子进程总是在fork之后首先执行。还有一些方法可以强制子进程先运行。我想知道是否有办法强制先运行父进程?

您可以使用此方法

pid_t pid = fork();
if (pid == -1)
    abort();
else if (pid == 0) 
{
    raise(SIGSTOP); // stop the child
} 
else 
{
    waitpid(pid, NULL, WUNTRACED); // wait until the child is stopped
    kill(pid, SIGCONT); // resume the child
}

这取决于操作系统的类型和上下文切换时间。您唯一可以做的方法是在child中写入sleep(time),以便它在父进程之后获得cpu是的,但即使这样,子进程也必须运行一次以执行sleep/sigsupspend。您可以通过
ptrace
安排在
SIGSTOP
ed状态下创建子进程。