我一直在试图运行如下使用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。这可能会导致各种各样的麻烦 - 可能会或可能不会成为您的特殊问题,但最好先解决。 –