如何在一行输出execvp?

时间:2015-08-08 20:48:54

标签: shell unix ls execvp minix

我需要帮助,我正在尝试在minix3中创建一个shell,我想创建自己的" ls"命令,所以目前我正在使用execvp命令。唯一的问题是我想在一行上输出所有内容,而不是在他们自己的行上的每个目录。我一直试图让这一点正确一段时间,我似乎无法把它弄好。我不确定这是否可行,但是如何在不使用system()的情况下获得最终产品的任何建议将不胜感激!

我的代码示例:

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

先谢谢你了!

1 个答案:

答案 0 :(得分:0)

最简单的可能是将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);
相关问题