![]() |
|
Модераторы: powerfox, ZeeLax |
![]()
|
|
| IBS |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: нет Всего: 6 |
Не могу разобраться....
Пример кода:
Итог:
Желаемый результат:
Подскажите как правильно подобное реализовать?? Это сообщение отредактировал(а) IBS - 29.5.2012, 00:07 |
||||||
|
|||||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 113 Всего: 317 |
Заметь: твои процессы слишком коротко живут.
"упражнение" по сигналам: в общем, каждый раз когда сынок изменяет статус (бегу, сплю, отдыхаю, умираю), родитель получает сигнал 17 (SIGCHLD). в частности, когда сыновний процесс издыхает, он тоже выпускает на последнем дыхании этот SIGCHLD. Вот попробуй отловить его дополнительным обработчиком. Моя теория: Ты послыаешь сигнал SIGUSR1 сыну, когда тот уже издох. Поэтому, обработчик ничего не печатает. но предварительно, по правилам кашрута сын посылает сигнал папаше SIGCHLD. A папаша его не слушает (извечная проблема: отцы и дети Eще момент: ты (скрытое предположение) ожидаешь от сына, будто он ни хрена не делает и только ждет когда его папаня чего нибудь попросит сделать. т.е. игнорируешь возможность того, что сын реально занят (или уже умер i.e.: сухо - проблема параллелизма с соусом - в России многие родители считают, что сам факт их родительства дает им полное право нарушать график работы детей без заззрения совести я могу представить ситуацию, когда твой обработчик сигнала распечатает строку после строк родителя, т.е.:
Это сообщение отредактировал(а) bilbobagginz - 29.5.2012, 06:36 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
||||
|
||||
| IBS |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: нет Всего: 6 |
Спасибо, в чем косяк понял:
Я пытаюсь отправить сигнал процессу, который еще не был создан.... Должно быть как-то так
Но здесь мне не нравится следующая ситуация: я чтобы дождаться пока дочерний процесс будет создан ставлю sleep - как -то это не правильно. Пробовал приоритеты расставлять процессам в родительском через setpriority - не помогает. Пробовал kill(id, SIGUSR1) засунуть в While и пытаться дождаться пока сигнал не будет отослан успешно - так он родительский процесс крутит до посинения, а дочернего все нет( ps: bilbobagginz, ответил таки прикольно
Не совсем то. wait - блокирует процесс до тех пор пока дочерний процесс не завершится, а мне надо чтобы он блокировался до тех пор пока не будет создан дочерний. Хотя... конечно можно было вообще отправку/принятие сигналов заменить на wait в конкретном случае, но по условию надо через сигналы Это сообщение отредактировал(а) IBS - 29.5.2012, 15:26 |
||||
|
|||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: нет Всего: 101 |
не так. дочерний процесс уже создан, но не установлен обработчик
так:
Добавлено через 1 минуту и 13 секунд кстати, кому тут шлется сигнал? Это сообщение отредактировал(а) baldina - 29.5.2012, 11:52 |
|||
|
||||
![]()
|
| Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |