LINUX.ORG.RU

Pipe channles. Наверное я криворукий :)


0

0

Ситуация такая:
Программулина открывает один папйповый канал. Потом порождает
ребёнка. Подменяем ребёнку stdin на конец из которого можно читать.
Ребёнок делает exec тару который читает архив из stdin естественно.

А основная прога пишет в другой конец архив. пишет побайтно (Именно так требует задача. Иначе нельзя).

Вроде-бы всё как надо. Но фишка в том что 4096 байт (1 страница) в пайпу
записываеться и дальше всё чего-то ждёт. Чего я понять не могу.

Прототип который я написал на Tcl работал без проблем. Передавая именно побайтно.

У кого какие соображения есть на эту тему ? А то я не могу понять чего-то.
И ещё если попробовать писать не в пайпу а просто писать это в stdout
и перенаправлять в файл. То потом этот файл не получаеться распаковать.
Говорит вообще на архив не похоже.

Чё делать ?


Проблема в том что pipe будет заблокирован когда из него не читают - т.е. тада залезет некоторое кол-во данных, и пока их не начнут читать всяк кто попробует писать будет блокирован.

Похоже что твой второй процесс не читает данные.

Надеюсь это поможет;)

tvn
()

> И ещё если попробовать писать не в пайпу а просто писать это в stdout
> и перенаправлять в файл. То потом этот файл не получаеться
> распаковать. Говорит вообще на архив не похоже

Я бы поверил. От этого и tar может расстроиться и перестать читать. Пришлите код, будем разбираться.

vnp
()

Я знаю что пайп блокируеться если не читать.

А насчёт кода. То там его не так и мало :)) И куда его слать :)

Тут чтоль навалить ? :))))

DEathq3
() автор топика

навали тут, разберемся :)

anonymous
()

Сами напросились :)))

Домой приду навалю. Дома всё просто лежит.


Кстати я запостю только критичные части. А то там уже килов 30 кода :)

DEathq3
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.