我一直在試圖運行如下使用exevp命令:無法運行execv
char *args[11];
args[0] = (char*)lgulppath.c_str();
args[1] = (char*)"-i";
args[2] = (char*)sniffer_interface.c_str();
args[3] = (char*)"-r";
args[4] = (char*)pcapfileLimit.c_str();
args[5] = (char*)"-C";
args[6] = (char*)"1";
args[7] = (char*)"-f";
args[8] = (char*)serverip_filter.c_str();
args[9] = (char*)"-o";
args[10] = (char*)lpipepath.c_str();
execv("/usr/sbin/program",args);
這個工程。然而,當我想擁有的第一個參數「/ usr/sbin目錄/程序」作爲參數,說:
string str = "/usr/sbin/program";
//char* args is assigned as above
execv(str.c_str(),args);
這種失敗並返回-1。我無法理解爲什麼。
謝謝大家
什麼是errno? – Jasper
首先,傳遞給'execv'的參數數組應該由一個指向NULL的條目終止。其次,當你得到一個錯誤,你可以檢查['errno'](http://en.cppreference.com/w/cpp/error/errno)的理由(使用['strerror']](http:// en .cppreference.com/w/cpp/string/byte/strerror)或['perror'](http://en.cppreference.com/w/cpp/io/c/perror)來獲取/打印可讀的描述) 。 –
您似乎無法在args數組的末尾放置NULL。這可能會導致各種各樣的麻煩 - 可能會或可能不會成爲您的特殊問題,但最好先解決。 –