![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
deber |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 28.2.2006 Репутация: нет Всего: нет |
Ситуация примерно такая:
readfile() постоянно читает данный файл. Мне нужно знать когда во временный файл прекратиться запись. Как это сделать наиболее хорошим способом? ![]() ЗЫ Обратите внимание на '&' |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
что означает "прекратиться запись"?
|
|||
|
||||
deber |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 28.2.2006 Репутация: нет Всего: нет |
Сори, ошибся, конечно прекратится. Т.е. когда процессы перестанут писать в него что-либо.
При этом мне надо чтобы процедура readfile могла читать его сразу. Т.е. читает и обновляет до тех пор, пока файл пополняется. Когда все процессы отпадут - конец программы. |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
да хоть и "прекратится".
вопрос в том, что считать прекращением записи -- когда процесс умрет, когда процесс не пишет более часа, когда процесс не пишет более суток? |
|||
|
||||
deber |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 28.2.2006 Репутация: нет Всего: нет |
Хорошо, по другому.
Можно ли определить завершились ли все system'ы? |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
в вашем случае system запускает shell который запускает команду с амперсандом.
следовательно, команда завершается сразу, успешно. |
|||
|
||||
deber |
|
||||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 28.2.2006 Репутация: нет Всего: нет |
Да, верно.
Вот придумал кривой вариант, но что-то сомнения какие-то: main.pl:
prog1.pl:
prog2.pl ... progN.pl - аналогичные по структуре prog1.pl Насколько это кривой вариант? Это сообщение отредактировал(а) deber - 3.12.2007, 12:53 |
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
кривой.
можно проще -- fork + exec + wait. |
|||
|
||||
deber |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 28.2.2006 Репутация: нет Всего: нет |
Боюсь wait в данном случае не прокатит. Он блокирующий.
А мне нужно работать с файлом когда еще идет запись, а не когда она закончится. Когда закончится, мне он уже не нужен. Т.е. если первый процесс записывает в файл такие строки: 1 2 3 4 А второй записывает такие: a b c d Таким образом, если процессы успели записать только "1, 2, 3". То мне нужно получить эти строки. При следующем запросе я хочу увидеть больше, например: "1, 2, 3, 4, a, b". А когда процессы отвалятся я увижу полную картину и тоже хочу отвалиться. ЗЫ Прошу прощения, если я плохо объясняю. Рад любой помощи. |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
тогда не wait, а pipe, или любой другой ipc, в детях не exec, а тот-же system, но без &, и посылка папе какого-либо сигнала по ipc.
папа делает свою работу и изредка проверяет сигнал от ребенка. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |