我有一个项目需要使用exec系列。我的项目包括制作一个交互式shell。 shell将实现一些基本命令,如cd,ls,echo等。我一直在研究exec的使用,但还没有找到有用的站点。任何建议的链接都会有所帮助。
int ret;
ret = execl ("/bin/ls", "ls", "-1", (char *)0);
如何在屏幕上显示此操作的输出?
答案 0 :(得分:4)
做
int fd = 1;
dup(fd);
close(fd);
将输出输出到屏幕。
答案 1 :(得分:2)
您编写的代码在一个简单的测试程序中为我工作,该程序不执行任何其他操作。请记住,当您调用execl时,该进程会保留所有旧文件句柄。所以无论你调用execl时stdout是什么,加载新二进制文件时都是一样的。如果您只想将输出发送到终端,只需确保stdout进入终端。
如果你想用另一个程序进行I / O,popen对此有好处(如提到的mgb)。它将分叉一个新进程,为您设置管道,调用exec的一些变体,并返回一个可用于通信的文件句柄。