execvp(),无法直接返回命令行

时间:2013-01-30 20:08:23

标签: c++ operating-system exec fork

我正在玩execvp(),发现了一件有趣的事情,首先是代码。 使用namespace std;

#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”)之后我可以回到shell而不会点击我的“Enter”?

1 个答案:

答案 0 :(得分:4)

您的主程序在ls完成之前退出。到ls完成时,其输出模糊了shell提示符。

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

  • else wait(0);的右大括号后添加if
  • 删除对fork()
  • 的来电