gpt4 book ai didi

c - 在前台执行

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:55 25 4
gpt4 key购买 nike

我无法让 execvp 以类似于 system() 的方式工作。

当我使用代码时:

int cstatus; /* Exit status of child. */
pid_t cpid;
switch (cpid = fork ()) {
case -1:
printf("fork");
case 0: // child
system("./file");
printf("child->");
default:
pid_t tpid = wait(&cstatus);
printf("parent\n");
}

./file 按预期运行并打印 child->parent

但是当我尝试运行程序时:

int cstatus; /* Exit status of child. */
pid_t cpid;
switch (cpid = fork ()) {
case -1:
printf("fork");
case 0: // child
execvp("file", NULL);
printf("child->");
default:
pid_t tpid = wait(&cstatus);
printf("parent\n");
}

我得到了 child->parentparent 的输出,但文件没有在命令提示符中显示输出(从 file 生成)。

我是不是做错了什么?我实际上是在尝试让 file 在前台运行并让父进程等待它完成。

最佳答案

部分区别在于 execvp() 除非失败,否则不会返回,但 system() 总是返回。因此,system()fork + exec 的替代(覆盖函数)。您还需要考虑当前目录是否在您的 PATH 上。

关于c - 在前台执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19968021/

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