代码之家  ›  专栏  ›  技术社区  ›  Jose Vega

执行家庭

  •  4
  • Jose Vega  · 技术社区  · 16 年前

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

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

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

    2 回复  |  直到 16 年前
        1
  •  2
  •   Jay Conrod    16 年前

    您编写的代码在一个简单的测试程序中对我有用,而这个程序不做其他任何事情。记住,当您调用execl时,进程会保留所有旧的文件句柄。所以无论调用execl时stdout是什么,当加载新的二进制文件时它都是一样的。如果您只想输出到终端,只需确保stdout到终端即可。

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

        2
  •  4
  •   Jose Vega    16 年前


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

    获取屏幕的输出。