2013-03-27 103 views
0

嘗試使用execve命令時,收到有關最後2個參數的錯誤。如何在C++ execve命令中將字符串轉換爲char [] *?

 #include <unistd.h>   
    const char * c = enviorment.c_str(); 
    execve(full.c_str() , cl.getArgVector(), c); 

我使用拷貝字符串,如幾個不同選項嘗試:

char *temp2 = new char[(path).size()+1]; 
strcpy (temp2, cl.getCommand()); 
    execve(full.c_str() , cl.getArgVector(), temp); 

,但我無法得到它的工作,並收到一條錯誤消息:

錯誤:無法將char *轉換爲char * const *將參數3轉換爲int execve(const char *,char * const *,char * const *)

+0

「環境」是什麼樣的?是「KEY = VALUE」形式的單個鍵/值對還是多個分隔鍵 - 變量? – 2013-03-27 02:53:41

+0

@JorgeIsraelPeña我相信這是特定環境(* ba-dun-tss *) – 2013-03-27 02:56:18

+0

@ RichardJ.RossIII確實,從手冊頁看來,這似乎是一個慣例,但並不一定是強制性/必要條件。我錯誤地認爲它需要是「KEY = VALUE」形式的字符串數組。儘管如此,我要求知道我們是否應該拆分他的'environment'字符串,這取決於他的環境'execve'如何期待'envp'參數。 – 2013-03-27 02:59:18

回答

0

環境變量數組是字符串(char *)的數組,一字符串。它需要一個NULL值作爲數組中的最後一個元素。

模仿您用於實現c1.getArgVector()的代碼,確保數組中的最後一個char *爲NULL。

+0

我在最後遺漏了NULL。非常感謝! – user1797035 2013-03-28 02:49:31