我正在玩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”?
答案 0 :(得分:4)
您的主程序在ls
完成之前退出。到ls
完成时,其输出模糊了shell提示符。
您可以使用以下任一方法解决此问题:
else wait(0);
的右大括号后添加if
。fork()
。