ユーザーが特定のコマンドを入力したときにexecvpを使用してdemo.cppという新しいプログラムを起動するプログラムを作成する必要があります。ユーザーは入力形式を入力しますexecvpで新しいプログラムを実行できない
bgデモ単語int1 int2(単語bgの単語の関連性を無視し、私はコード内のcommandという文字列に格納します)。
これはコードです:
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
それを呼び出す)を構築し、そのをexecしする必要があります。/ demo.cpp'?それはC++ソースファイルですか? C++ソースファイルは実行できません。 – mchSOに関する同様の問題を検索してください。この質問を確認してください。 http://stackoverflow.com/questions/14301407/how-does-execvp-run-a-command – Laza
@mch:私は愚かです!もちろん、C++ソースファイルをexecvpすることはできません。 –