Я не знаю, что я делаю неправильно ... но вот это фрагмент кода, который выполняется:перенаправлять вывод execvp в файл в C
if (fork() == 0)
{
// child
int fd = open(fileName, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
dup2(fd, 1); // make stdout go to file
execvp("ls","ls");
close(fd);
exit(0);
}
if(wait(&status) == -1)
{
printf("ERROR REDIRECT\n");
}
fileName
получает создан, но есть ничего внутри. Что я делаю неправильно?
Вы не вызываете 'execvp' должным образом. – dreamlax
Пробовал ли вы один и тот же код без 'dup2'? Он должен печатать до стандартного вывода. Этот тест может помочь сосредоточиться на проблеме. – ugoren
Вы считали exec'ing командой «ls> $ filename»? – dbeer