Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
al8 Гость
|
Добавлено: Вс Янв 04 2004 15:47 Заголовок сообщения: процессы и pipe в unix |
|
|
так и не смог внятно реализовать следующую задачку:
два процесса через pipe() обмениваются данными
нужно узнать сколько один передал другому и вывести на экран кол-во переданных байт |
|
Вернуться к началу |
|
|
совсем незнакомый
Зарегистрирован: 24.12.2003 Сообщения: 183 Откуда: Israel
|
Добавлено: Пн Янв 05 2004 11:31 Заголовок сообщения: Re: процессы и pipe в unix |
|
|
al8 писал(а): | так и не смог внятно реализовать следующую задачку:
два процесса через pipe() обмениваются данными
нужно узнать сколько один передал другому и вывести на экран кол-во переданных байт |
задачка не трудная. какая ОС ? |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Пн Янв 05 2004 12:02 Заголовок сообщения: |
|
|
unix. например, freebsd.
только не два процесса, а две программы через pipe. но это не принципиально... |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Вт Янв 06 2004 10:01 Заголовок сообщения: |
|
|
к сожалению нет под рукой юникса...
Делал когда-то под QNX4. Создаёшь pipe в файловой системе, команда mknod, на сколько помню. Одна программа открывает pipe на чтение как обычный файл, т.е. с помощью fopen (или open), а вторая на запись. А дльше разгребай! Может быть что читающий процесс будет блокироваться при попытке чтения если pipe пуст. И будет оставаться заблокированным пока пишущий не запишет в pipe данных столько (или больше) сколько первый собирался прочитать. А может не блокироваться, просто ф-я read возвратит число успешно прочитанных байт. Это зависит от настроек, которые задаются для открытого на чтение пайпа функцией ioctl. Если хочешь двусторонний обмен - делай два пайпа. |
|
Вернуться к началу |
|
|
Гость
|
Добавлено: Ср Янв 07 2004 11:05 Заголовок сообщения: |
|
|
во Фре стоит прочитать следующие man pages:
pipe(), mkfifo() ....
всё. |
|
Вернуться к началу |
|
|
|