Under Linux, the signal function is equivalent to using sigaction with the SA_ONESHOT and SA_NOMASK options; that is, it corresponds to the classic, unreliable signal semantics as used under SVR4.
If you wish signal to use BSD semantics, most Linux systems provide a BSD compatibility library which can be linked with. To use this library, you could add the options
-I/usr/include/bsd -lbsdto the compilation command line. When porting applications using signal, pay close attention to what assumptions the program makes about use of signal handlers, and modify the code (or compile with the appropriate definitions) to get the right behavior.