![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
abskura |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 21.11.2009 Репутация: 1 Всего: 1 |
Обращаюсь к достопочтенным форумчанам со следующим вопросом:
- Что на практике означает (какие системные вызовы используются): "Передать полученную информацию через файловую систему в параллельный процесс"? Понятно, что тут юзается fork(), а вот что значит передать через файловую систему? Это как? Это же явно не pipe(), тут что-то другое, подскажите что. Полный текст задания: Написать программу определения типа файла, указанного при запросе. Полученную информацию через файловую систему передать в параллельный процесс, где вывести на печать. Предусмотреть возможность поступления неоднократного прерывания от клавиатуры. При поступлении каждого сигнала прерывания выводить количество файлов (из числа указанных при запросе), содержащих текст программ на Си. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
скорее всего имеется в виду либо именованный канал (man mkfifo), либо обычный файл
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 1 Всего: 39 |
Плюсую fifo. Но и через файл можно: man select, man poll.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
abskura |
|
||||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 21.11.2009 Репутация: 1 Всего: 1 |
Реализую через mkfifo
В итоге при выполнении программы появлятеся это:
И программа остаётся не завершённой. На чём-то виснет и не выходит. В процесс отец она получается вообще не попадает, а в сына аж два раза запускала. Завершить её можно нажав ctrl+C. Все перроры молчат... В чём тут может быть загвоздка? Просто первый раз использую mkfifo. Это сообщение отредактировал(а) abskura - 13.12.2009, 00:33 |
||||
|
|||||
abskura |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 21.11.2009 Репутация: 1 Всего: 1 |
Добавил флаг O_NONBLOCK в оба open().
Теперь ситуация выглядит следующим образом
Чем не доволен опен? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
тут логическая ошибка Добавлено через 9 минут и 8 секунд в неблокирующем режиме открыть канал на запись можно только если некоторый _уже_ открыл его на чтение -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
abskura |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 21.11.2009 Репутация: 1 Всего: 1 |
MAKCim Спасибо вам огромное, всегда выручаете).
if проглядел). С mkfifo разобрался. При попытке записи в FIFO, который не открыт в данный момент для чтения ни одним процессом, генерируется сигнал SIGPIPE. При помощи обработчика сигнала мы эту гадость обходим и радуемся жизни. Пруфлинк с описанием и кодом. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |