2013-10-12 16 views
0

我就需要能夠使用execvp執行某些命令的C程序的工作,我也有實現這一點:Ç - 錯誤試圖通過時/斌/ LS到execvp

execvp(arguments[0], arguments);

其中arguments[]是一系列刺痛。大多數情況下,我的實現工作正常 - 例如如果arguments{"touch", "somefile.txt"},則按預期調用touch命令。

然而,當我試圖傳遞ls與參數是像{"/bin/ls", "-a", "."}到execvp,通過功能LS打印效果與預期的目錄列表,但還打印了錯誤

ls: cannot access GLIBC_2.0: No such file or directory

我不知道如何解決這個警告,谷歌搜索沒有任何結果。任何想法有什麼不對?

回答

2

execvp的手動頁面表示:

execv()execvp()函數來表示提供給 新程序的參數列表 空終止字符串提供指針數組。按照慣例,第一個參數應指向 與正在執行的文件關聯的文件名。 指針的數組必須以空指針終止。

+0

解決了這個問題。但爲什麼要尋找'GLIBC_2.0'? – DTR

+1

@Dave在'arguments'數組後面有一個指向字符串「GLIBC_2.0」的指針,後面跟着數據部分,因此'ls'試圖列出那個。 –