2008-09-28 19 views
4

我有一个需要使用exec系列的项目。我的项目包括制作交互式外壳。 shell将执行一些基本的命令,如cd,ls,echo等。我一直在研究exec的使用,但还没有找到有用的站点。任何建议的链接都有帮助。exec系列

int ret; 
ret = execl ("/bin/ls", "ls", "-1", (char *)0); 

我将如何获得此操作的输出以显示在屏幕上?

回答

2

你写的代码适用于我的一个简单的测试程序,除此之外别无其他。请记住,当您调用execl时,该过程将保留所有旧文件句柄。因此,无论您调用execl时使用的标准输出是什么,当新的二进制文件加载时都是一样的。如果你只是希望输出到终端,只要确保stdout进入终端。

如果你想用另一个程序做I/O,popen对此很有用(如mgb提到)。它将分叉一个新进程,为你设置管道,调用exec的一个变体,并返回一个可用于通信的文件句柄。

4


int fd = 1; 
dup(fd); 
close(fd); 

获取输出到屏幕上。