Как я могу гарантировать, что программа, которую я запускаю, записывает свой стандартный вывод в открытое мной FD? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь реализовать перенаправление > и < для моей оболочки, но в моем случае, скажем, я делаю ls > output.txt, он создает новый файл, но не записывает его в файл.Вот предварительный просмотр моего кода:

    pid = fork();
    if (pid == 0){
        int i = 0;
        for (i=0; args[i]!='\0'; i++){
            int fd;
            if (strcmp(args[i], ">")==0){

                fd = open(args[i+1], O_CREAT|O_TRUNC | O_WRONLY, 0600);
                dup2(fd,  STDOUT_FILENO);
                close(fd);

            }
            if(strcmp(args[i], "<")==0){

                fd = open(args[i+1],O_RDONLY);
                dup2(fd,  STDOUT_FILENO);
                close(fd);
            }

1 Ответ

0 голосов
/ 01 марта 2019

Попробуйте это >> вместо>

'>>' добавить в конец файла

...