我试图通过我的程序执行UNIX命令,该命令将处理多达4个参数,为什么这会产生段错误或其他错误?
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;
}
崩溃是因为您的buffer
溢出。
尝试使用std::cin.getline(buffer, sizeof(buffer))
代替std::cin >> buffer
还要注意,它strtok
可能会返回NULL
,因此请确保您可以处理它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句