Я пытаюсь реализовать простую оболочку. Все остальное работает отлично, за исключением обработки ошибок.
Когда я пытаюсь выполнить недопустимую команду, такую как «cat ff», в которой «ff» не существует, я получаю следующее:
Ожидаемое поведение должно быть как у третьего "catt f". Он должен начинаться с «ОШИБКА:», а затем с сообщением об ошибке, что означает, что это должно быть «ОШИБКА: cat: ff: Нет такого файла или каталога»
Как мне изменить свой код, чтобы добиться этого? Заранее спасибо!
#include <fcntl.h>
#include <iostream>
#include <unistd.h>
#include <cstring>
#include <errno.h>
#include <sys/wait.h>
using namespace std;
int main(){
int pid;
int status;
char *cmd[] = {"cat", "ff", NULL};
if ((pid = fork()) == 0){
if (execvp(cmd[0], cmd) == -1){
cout << "ERROR:" << strerror(errno) << '\n';
}
}else if (pid == -1){
cout << "ERROR:" << strerror(errno) << '\n';
}else{
waitpid(pid, &status, 0);
cout << "Status: " << status << '\n';
}
}
Статус здесь не очень необходим здесь. Это просто моя попытка выяснить, стоит ли это до того сообщения об ошибке. Я супер новичок в этом, и я очень смущен и потерян. Пожалуйста, прости меня, если я сделал что-нибудь излишне.