The OpenNET Project / Index page

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

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

"конвер."  
Сообщение от Анд on 18-Авг-06, 14:05 
Происходит следующее:
есть два  процесса p1 и p2:
1) в цыкле (выводит на консоль текст и уходит в sleep(2))
2) в цыкде (делаем некие действия (к примеру выводим на консоль символ) и ждем ввод с консоли функцией fgets(...))
делаем коныеер:
./p1 | ./p2
в итоге висим ( судя по всему в функции fgets)...
Объясните пжлста почему и как с этим бороться. Спасибо.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "P.S.."  
Сообщение от Анд on 18-Авг-06, 14:09 
P.S.
забыл сказать что если sleep убираем , то все ОК .


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "P.S.."  
Сообщение от gyn61 (ok) on 18-Авг-06, 21:58 
fflush(stdout) после вывода пробовали делать?


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "fflush помог. Вопрос такой: (+)"  
Сообщение от Анд on 06-Сен-06, 10:26 
>fflush(stdout) после вывода пробовали делать?
С чем это связано ? Ведь без конвеера все и так работает....
Можно ли как-то это лечить другими способами,
не трогая основное приложение ?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "fflush помог. Вопрос такой: (+)"  
Сообщение от ACCA (ok) on 06-Сен-06, 11:11 
>>fflush(stdout) после вывода пробовали делать?
>С чем это связано ? Ведь без конвеера все и так работает....

С буферизацией. p1 ничего не отдаёт в stdout, пока или
1. Не накопится 4K
2. Не пройдёт fflush (который проходит по время exit).

>Можно ли как-то это лечить другими способами,
>не трогая основное приложение ?

"Основное приложение" это P1? Никак не лечится - оно написано неправильно. Либо позаменяй все printf на write, либо сделай setvbuf(stdout, (char *)NULL, _IONBF, 0), либо делай fflush после каждого printf.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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