执行家庭

时间:2008-09-28 21:53:50

标签: c process exec

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

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

如何在屏幕上显示此操作的输出?

2 个答案:

答案 0 :(得分:4)

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

将输出输出到屏幕。

答案 1 :(得分:2)

您编写的代码在一个简单的测试程序中为我工作,该程序不执行任何其他操作。请记住,当您调用execl时,该进程会保留所有旧文件句柄。所以无论你调用execl时stdout是什么,加载新二进制文件时都是一样的。如果您只想将输出发送到终端,只需确保stdout进入终端。

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