Мне нужно написать программу, которая запустит новую программу под названием demo.cpp, используя execvp, когда пользователь вводит определенные команды. Пользователь вводит ввод в форматеexecvp не запускает новую программу
bg demo word 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;
}
Каждый раз, когда код печатает "Failed". Единственное, что я могу думать, это, возможно, ошибка в формате аргументов, переданных execvp. Этот код и demo.cpp хранятся в одной папке.
Что такое ' ./demo.cpp'? Это исходный файл на C++? Вы не можете выполнить исходный файл C++. – mch
Поиск похожих проблем на SO, проверьте этот вопрос, например http://stackoverflow.com/questions/14301407/how-does-execvp-run-a-command – Laza
@mch: Я глуп! Конечно, вы не можете выполнить execvp исходный файл C++. –