The following example illustrates posting a signal handler for the SIGABRT signal:
#include <stdio.h> #include <signal.h> #include "cobtypes.h" #include "cobsignal.h" #include "cobmain.h" int mysigcatch(int sig, cobsiginfo_t * mf_info) { printf("In signal handler for sig %d\n", sig); return 0; /* Do not process any further handlers. */ } void mysigexit(cobsigtype_t sighand) { printf("Cancelling handler\n"); cobremovesighandler(sighand); /* Remove the handler. */ } int main(int argc, char *argv[]) { cobsigtype_t sighandle; cobinit(); sighandle = cobpostsighandler(SIGABRT, 128, mysigcatch); if(sighandle) { /* Call a cobol program using cobfunc function. */ cobfunc("cobolprog", argc, argv); raise(SIGABRT); /* Raise the signal. */ mysigexit(sighandle); } cobexit(0); /* Cobexit - close down COBOL run-time environment. */ }