gpt4 book ai didi

c - 如何从exec返回控制权?

转载 作者:行者123 更新时间:2023-11-30 17:47:10 24 4
gpt4 key购买 nike

这是我的代码:

void function_exists(int foo)
{
char bar[10] = "/bin/";
int baz;
strncat(bar,act_arg[0],sizeof(act_arg[0]));
if(fork() == 0)
{
printf("\n");
baz = execlp(bar,act_arg[0],NULL);
if(baz == -1)
{
foo++;
wait(NULL);
}
else
{
wait(NULL);
exit(0);
}
}
fflush(stdout);
printf("Hello");
}

我正在尝试从 execlp 返回控制权,并且我知道除非出现错误,否则它不会返回值,因此我使用了 fork。但是当我执行代码时,首先会打印 hello。为什么会发生这种情况?

还有

有没有办法让 exec 返回或任何其他系统调用对我做同样的事情。现在我按 Enter 键,我的程序接管,但我想在不按 Enter 键的情况下执行此操作。

我没有足够的代表来发布图像,因此这里是我的输出的链接: http://tinypic.com/r/6szw52/5

最佳答案

当您调用execlp时,子进程区域将被execlp覆盖,因此execlp之后可用的代码将不会被执行。

wait放在主循环中即可达到预期的结果。

检查这段代码你会得到更多的想法。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
pid_t child;
child = fork();
if(child == 0) {
printf("at child\n");
execlp("./hello",argv[0],NULL);
printf("after execlp in child\n\n");
sleep(2);
}
else {
wait(NULL);
printf("parrent finish\n");
}
return 0;
}

printf 在 execlp 之后可用,不会执行。

关于c - 如何从exec返回控制权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035796/

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