Feb18
【原创】execvp中参数问题小记
Author: leeon Click: 6976 Date: 2013.02.18 @ 20:59:03 pm Category: Linux C/C++编程
今日在封装一个类时遇到execvp的传参个数问题,execvp允许传入两个参数,第一个参数是执行的文件路径(可以是命令名也可以是文件绝对路径名),第二个参数包括执行的命令以及命令参数构造的一个二维数组,我用stl的string来构造第二个参数的时候申明了一个char*的一维字符指针,通过string的const_cast方式构造一个参数列表,但是发现执行的execvp老是失败,strace的时候发现构造的数组在传入的时候会多了一项,在学习c/c++的时候标准说过数组的维数+1都是合法的,故在最后一项后的一项也一并传入了execvp。 例如我申明了一个char *arr[5],实际上arr[5] 这一项也会传入,故我们需要在赋值的时候对这一项申明arr[5]='\0' ,从而避免这一项污染执行的命令。
TAG: execvp