Я пытаюсь сделать эквивалент команды Баш ls>foo.txt
в С.Перенаправление стандартный вывод в файл
Код ниже перенаправляет вывод в переменную.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(){
int pfds[2];
char buf[30];
pipe(pfds);
if (!fork()) {
close(pfds[0]);
//close(1);//Close stdout
//dup(pfds[1]);
//execlp("ls", "ls", NULL);
write(pfds[1], "test", 5); //Writing in the pipe
exit(0);
} else {
close(pfds[1]);
read(pfds[0], buf, 5); //Read from pipe
wait(NULL);
}
return 0;
}
Линии комментариев относятся к тем операциям, которые, как я считаю, необходимы для перенаправления. Что я должен изменить для перенаправления вывода ls на foo.txt?
Почему вы создаете трубу, когда в синтаксисе оболочки, который вы эмулируете, нет ни одной трубы? –
«Эквивалент [этого кода bash] в C» не делает его вопросом bash. Только отметьте его bash, если вы хотите, чтобы люди, которые являются экспертами в bash (а не C!), Смотрели на него. –