gpt4 book ai didi

c - 使用 fork(),如何让子进程始终先运行?

转载 作者:IT王子 更新时间:2023-10-29 01:05:46 27 4
gpt4 key购买 nike

子进程和父进程执行是并行的,先启动取决于操作系统调度。但是如何才能始终在父级之前启动子级?

这是我的问题的伪代码,

int start_test()
{
pid_t pid;
pid = fork();
if(pid == 0) {
execv("XXX", XXX);
} else if(pid > 0) {
pid = fork();
if(pid == 0) {
execv("XXX", XXX);
} else {
// Do something
}
}
return 0;
}
int main()
{
start_test();
return 0;
}

我想让第一个 execv 先执行,然后父进程再次创建新进程。每个 execv 都应该按顺序。

最佳答案

我真的不知道为什么人们一直告诉不要依赖这种行为,它实际上在跟踪程序(strace、ldtrace 等)中使用了很多。

首先,fork 你的进程并获取子进程 pid,停止子进程,然后在父进程中恢复它:

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
}

关于c - 使用 fork(),如何让子进程始终先运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com