0

我在玩 execvp(),发现了一个有趣的东西,首先是代码。使用命名空间标准;

#include <iostream>
#include <unistd.h>

int main(){

    char *argv[3];
    int pid = fork();
    if (pid == 0){
    argv[0] = "ls";
    argv[1] = "-l";
    argv[2] = NULL;
    execvp("ls", argv);
    }

}

这是一个简单的 fork + execvp 问题,但我发现“ls”执行成功后,我必须按 Enter 才能回到命令行(shell)

任何人都知道我该如何做到这一点,以便在 execvp("ls") 之后我可以在不点击“Enter”的情况下返回 shell?

4

1 回答 1

4

您的主程序在ls完成之前退出。到ls完成时,它的输出已经掩盖了 shell 提示符。

您可以使用以下任一方法解决此问题:

  • 在' 的右大括号else wait(0);之后添加。if
  • 删除对 的呼叫fork()
于 2013-01-30T20:11:49.610 回答