The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"duplicate stdout to file descriptor - что я дулаю не так?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"duplicate stdout to file descriptor - что я дулаю не так?"
Сообщение от Станислав Линке emailИскать по авторуВ закладки on 25-Фев-04, 15:14  (MSK)
Есть некий поток рождаемый ./getdata, мне его надо пропарсить в ./parsedata. Что-то вроде этого:

./getdata | ./parsedata

При этом, сам поток мне надо сохранить где-нибудь, на случай если возникнет ошибка парсинга. При этом сделать это в parsedata я не могу.

(1) Есть ли стандартное решение вида:

./getdata | save_and_echo -f backupfile.txt | ./parsedata

чтобы в файл сохранила и дальше в stdout свой передала. И на SIGPIPE не реагировала (если ./parsedata отвалился).

(2) Можно ли средствами bourne shell это сделать?
Читаю в документации:
[n1]>&n2 duplicate stdout (or file descriptor n1) to file descriptor n2
Пытаюсь выполнить:

./getdata 3>backupfile.txt >&3 | ./parsedata

при этом до parsedata данные не доходят, а оседают в backupfile.txt. Может быть, я неправильно понимаю смысл duplicate stdout? Это не данные дублируются, а сам дескриптор?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "duplicate stdout to file descriptor - что я дулаю не так?"
Сообщение от HFSC Искать по авторуВ закладки on 25-Фев-04, 15:29  (MSK)
>Есть некий поток рождаемый ./getdata, мне его надо пропарсить в ./parsedata. Что-то
>вроде этого:
>
>./getdata | ./parsedata
>
>При этом, сам поток мне надо сохранить где-нибудь, на случай если возникнет
>ошибка парсинга. При этом сделать это в parsedata я не могу.
>
>
>(1) Есть ли стандартное решение вида:
>
>./getdata | save_and_echo -f backupfile.txt | ./parsedata
>
>чтобы в файл сохранила и дальше в stdout свой передала. И на
>SIGPIPE не реагировала (если ./parsedata отвалился).
>
>(2) Можно ли средствами bourne shell это сделать?
>Читаю в документации:
>[n1]>&n2 duplicate stdout (or file descriptor n1) to file descriptor n2
>Пытаюсь выполнить:
>
>./getdata 3>backupfile.txt >&3 | ./parsedata
>
>при этом до parsedata данные не доходят, а оседают в backupfile.txt. Может
>быть, я неправильно понимаю смысл duplicate stdout? Это не данные дублируются,
>а сам дескриптор?


man tee

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "duplicate stdout to file descriptor - что я делаю не так?"
Сообщение от Станислав Линке emailИскать по авторуВ закладки on 26-Фев-04, 08:42  (MSK)
Спасибо за tee!

Остаётся добавить, что tee выходит после SIGPIPE и данные пропадают.

Что с этим делать:

(1) Я скопировал исходник nohup, добавил туда строку (void)signal(SIGPIPE, SIG_IGN); (в то месте, где другие вызовы signal) и откомпилировал его в nohupipe.

./getdata | nohupipe tee -i data.dump | ./parsedata

(2) Стандартные решения? Какие - не знаю.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "duplicate stdout to file descriptor - что я делаю не так?"
Сообщение от vt Искать по авторуВ закладки on 26-Фев-04, 17:26  (MSK)
>(2) Стандартные решения? Какие - не знаю.

./getdata > file &
tail -n +1 -f file | ./parsedata

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру