2015-08-08 42 views
-1

我需要幫助,我正在嘗試在minix3中創建一個shell,並且我想創建自己的「ls」命令,所以此刻我正在使用execvp命令。唯一的問題是,我希望它在一行中輸出,而不是在他們自己的行上輸出每個目錄。我一直試圖讓這個正確的相當一段時間,我似乎不能得到它的權利。我不確定這是否可行,但對於如何實現最終產品而不必使用system()將不勝感激!我的代碼的如何在單行上輸出execvp?

例子:

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

謝謝先進!

回答

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);