【问题标题】:How do I output execvp on a single line?如何在一行上输出 execvp?
【发布时间】:2015-08-08 20:48:54
【问题描述】:

我需要帮助,我正在尝试在 minix3 中创建一个 shell,并且我想创建自己的“ls”命令,所以目前我正在使用execvp 命令。唯一的问题是我希望所有输出都在一行上,而不是每个目录在自己的行上。很长一段时间以来,我一直在尝试纠正这个问题,但我似乎无法做到这一点。我不确定这是否可能,但任何关于如何在不使用system() 的情况下实现最终产品的建议将不胜感激!

我的代码示例:

char* arg[] = {"ls", "-1", NULL};
execvp(arg[0], arg);

谢谢你!

【问题讨论】:

    标签: shell unix ls execvp minix


    【解决方案1】:

    最简单的方法可能是将ls 的输出通过管道传输到tr。您可以使用复杂的代码来设置管道,也可以使用脚本调用sh

    char const* args[] = {"sh", "-c", "ls | tr '\n' ' '", NULL};
    execvp(args[0], args);
    

    或者,如果您可以在条目之间使用逗号,请将-m 标志传递给ls

    char const* args[] = {"ls", "-m", NULL};
    execvp(args[0], args);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 2014-06-12
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      相关资源
      最近更新 更多