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