Задать вопрос

Как сделать дублирование вывода в файл?

Есть командный процессор на языке C под Linux, который может выполнять как свои встроенные команды, так и выполнять внешние команды и программы. Требуется дублировать вывод stderr и stdout в два разных файла ( вывод как внешних команд и программ, которые создаются через fork(), так и собственных). Подозреваю, что необходимо использовать функцию tee(), но примеров её работы не нашел.
UPD:
У меня для дочернего процесса, вывод сделан следующим образом:
int pipefd[2];
...
pid_t childId = fork();
case 0:
trap_signal(SIGTTOU, SIG_DFL);
trap_signal(SIGTTIN, SIG_DFL);
trap_signal(SIGCHLD, SIG_DFL);
if(!background && !convey)
tcsetpgrp(cterm, getpid());
setpgid(0, 0);
if (isWriter) close(pipefd[0]);
if (isReader!=-1) {
close(0);
dup(oldChannelOut);
}

if(isWriter){
close(1);
dup(pipefd[1]);
}


Как применить tee в данном случае?
  • Вопрос задан
  • 3167 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Ух ты! Новый вызов однако. Не знал... Вот и описание с примером man7.org/linux/man-pages/man2/tee.2.html
Мы в своё время извращались с копированием вручную в 2.4.xx ядрах :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы