Когда я 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

0 ответов

Другие вопросы по тегам