в проге (назову client) делаю так:
Код: Выделить всё
//start capture signals
if (signal(SIGUSR1, act) == SIG_ERR)
log_out("SIG_ERR", "init");другая прога прога(назову main) посылает примерно так:
Код: Выделить всё
if (kill(clpid, SIGUSR1)) {
log_out("SIGUSR1 failed.........................запускаються они примерно так:
в /etc/init.d/ лежит скрипт, он запускает 'main', - 'main' форкаеться и создает кучу 'client'ов, которые тоже форкаються и execv-каються ('main' может пропадать причЁм 'client' остаються) и потом 'main' посылает сигнальчики 'client'ам.
так вот када, я ручками из консоли пишу /etc/init.d/скрипт start
-всЁ чудесно работает, но када енто делает кластер.. , то 'client' не видит что ему шлЁт сигнал 'main', причЁ даже если я, при запущенном кластером скрипте, из консоли говорю kill -SIGUSR1 'client' (его pid) - он их тоже не видет, а если я говорю kill -SIGTERM 'client' - то видет (SIGTERM я тоже перехватываю - он работает всегда), как я ручками из консоли так и кластер - скрипт запускаеться от одного и тогоже имени и группы. почему 'client' не видит сигналы или просто игнорирует или кластер их фильтрует?
надеюсь я понятно изложил)
ssa добавил в 19.01.2005 20:07
спасибо, но я уже разобрался))
Код: Выделить всё
sigset_t mask;
sigemptyset(&mask);
sigaddset(&mask, SIGUSR1);
sigprocmask (SIG_UNBLOCK, &mask, NULL);(от предка наследовалось, от кластерсьют)