-1

私は次のようにexevpを使用してコマンドを実行しようとしています:

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 / program」をパラメーターとして使用する場合は、次のようにします。

string str = "/usr/sbin/program";
//char* args is assigned as above
execv(str.c_str(),args);

これは失敗し、-1を返します。どうしてなのかわからない。

みんなありがとう

4

1 に答える 1

3

execvに渡す引数をnullで終了します。何かのようなもの

char *args[12];
// other args..
args[11] = (char*) 0;
于 2012-10-30T14:42:30.690 に答える