我必須寫一個程序,將使用execvp當用戶輸入某個命令啓動一個名爲demo.cpp新的程序。用戶將在格式輸入輸入execvp無法運行新程序
BG演示字INT1 INT2(忽略字BG的詞相關性,我把它存儲在一個字符串名爲命令在我的代碼)。
這是代碼:
int main(){
char *argv[5];
argv[0] = new char[10];
argv[1] = new char[10];
argv[2] = new char[10];
argv[3] = new char[10];
argv[4] = nullptr;
string command;
pid_t PID;
cin>>command; //store the string 'bg'
cin>>argv[0]>>argv[1]>>argv[2]>>argv[3];
PID = fork();
if(PID<0){
perror("Fork failed!");
}
else if(PID==0){
if(execvp("./demo.cpp",argv)<0)
printf("Failed");
}
wait(0);
return 0;
}
每次代碼打印 「失敗」。我唯一能想到的是,也許在傳遞給execvp的參數格式上有錯誤。此代碼和demo.cpp存儲在同一個文件夾中。
什麼是' 。/ demo.cpp'?它是一個C++源文件嗎?你不能執行一個C++源文件。 – mch
搜索上如此相似的問題,檢查這個問題,例如 http://stackoverflow.com/questions/14301407/how-does-execvp-run-a-command – Laza
@mch:我是愚蠢的!當然,你不能執行C++源文件。 –