我试图通过我的程序来执行一个UNIX命令,它将处理多达4个参数,为什么这会产生seg故障或其他错误?为什么下面的代码会产生分段错误?
using namespace std;
int main() {
char buffer[255];
cin >> buffer;
char* firstPtr;
char* secondPtr;
char* thirdPtr;
char* fourthPtr;
firstPtr = strtok(buffer, " ");
secondPtr = strtok(NULL, " ");
thirdPtr = strtok(NULL, " ");
fourthPtr = strtok(NULL, " ");
execlp(firstPtr, secondPtr);
return 0;
}
因为你调用未定义的行为? (或者你已经知道)? 'cin >> buffer'正在打破空白,因此在''“'上标记这个是没有意义的。因此'secondPtr'为NULL,你快乐地走进UB-land。 – WhozCraig
“或其他错误?”哪些其他错误? – codeling
当我exec的LS我得到的错误是NULL传递做argv [0] – Scholar