Когда я dup2 STDOUT он берет все свое содержимое
Я делаю снаряд (работает хорошо). Тем не менее, сейчас я пытаюсь реализовать перенаправление вывода. cat test1.txt > text2.txt
, Если я запускаю команды без перенаправления, это работает отлично. Так что же мне не хватает в моем коде вывода перенаправления?
Text1.txt
This is some dummy text
Если бы я запускал свою оболочку прямо сейчас, это было бы следующим
$shell cat test1.txt > text2.txt
Executing cat
Everything went well!
$shell
Теперь, если я открою text2.txt. Это то, что он содержит
Executing cat
This is some dummy text
Everything went well!
Мой код перенаправления
char **mycommand = {"cat", "text1.txt", ">", "text2.txt"};
if (strcmp(mycommand[2], ">") == 0) {
int fd = open(mycommand[3], O_RDWR | O_CREAT, S_IWUSR | S_IRUSR);
dup2(fd, STDOUT);
mycommand[2] = '\0';
break;
}
// Then it does all the execution stuff on mycommand