My Application had already configured a SIGTERM handler.
Ex:
Signal(SIGTERM, &signalHandler);
I want to do some processing before shutdown and I cannot do change in existing signal handler. To do my processing, I placed a hook like this configured my handler as
signal(SIGTERM, &mySignalHandler);
mySignalHandler calls signalHandler later after doing its processing to make system unaffected even after the hook.
Now, considering the fact that mySignalHandler will be invoked, It works when kill  $pid once.
But if I do it twice or more time. signalHandler gets called. As far as I know SIG_DFL should be performed in this case.
Anybody knows the reason for this.
I am using “Red Hat Enterprise Linux AS release 4 (Nahant Update 8)”
[EDIT]:strange behaviour faced with test program
#undef _GNU_SOURCE
using namespace std;
volatile sig_atomic_t signalHandlerVar_ = false;
volatile sig_atomic_t signalHandlerSecondVar_ = false;
extern "C" void signalHandler(int)
{
    signalHandlerVar_ = true;
}
extern "C" void signalHandlerSecond(int value)
{
    signalHandlerSecondVar_ = true;
}
void* threadFunc(void*)
{
    while(1)
    {
        if(signalHandlerVar_)
        {
            cout<<"signalHandler_ "<<signalHandlerVar_<<endl;
            signalHandlerVar_ = false;
        }
        if(signalHandlerSecondVar_)
        {
            cout<<"signalHandlerSecond_ "<<signalHandlerSecondVar_<<endl;
            signalHandlerSecondVar_ = false;
        }
    }
    return NULL;
}
int main()
{
    ::signal(SIGTERM, &signalHandler);
    ::signal(SIGTERM, &signalHandlerSecond);
    pthread_t thread;
    if(pthread_create(&thread, NULL, &threadFunc, NULL))
    {
        cout<<"pthread create failed"<<endl;
        return 1;
    }
    pthread_join(thread, NULL);
}
Here problem i am facing, on every kill $pid it calls signalHandlerSecond.as i am using #undef _GNU_SOURCE and tried #undef _BSD_SOURCE.But it should reset it to SIG_DFL.
Can anybody suggest where i am doing wrong?
 
     
    