高管家庭
时间:2020-03-06 14:51:12 来源:igfitidea点击:
我有一个需要使用exec系列的项目。我的项目包括制作一个交互式外壳。该Shell将实现一些基本命令,如cd,ls,echo等。我一直在研究exec的用法,但没有找到有用的站点。任何建议的链接都将有所帮助。
int ret; ret = execl ("/bin/ls", "ls", "-1", (char *)0);
我如何获得此操作的输出以在屏幕上显示?
解决方案
正在做
int fd = 1; dup(fd); close(fd);
获取输出到屏幕。
我们编写的代码可以在一个简单的测试程序中为我工作,该程序什么也不做。请记住,当我们调用execl时,该过程将保留所有旧文件句柄。因此,无论我们在调用execl时使用什么标准输出,加载新的二进制文件时都将是相同的。如果只想将输出发送到终端,则只需确保stdout可以发送到终端。
如果要使用另一个程序进行I / O,则popen对此很有用(如mgb所述)。它将派生一个新进程,为我们设置管道,调用exec的某些变体,并返回可用于通信的文件句柄。