sigchk.c
来自「MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程」· C语言 代码 · 共 202 行
C
202 行
/* This file provides routines to check for the use of signals by software */#include <stdio.h>#include <signal.h>#include "test.h"#include "mpi.h"/* In order to quiet noisy C compilers, we provide ANSI-style prototypes where possible */int SYiCheckSig ( FILE *, int, char * );int SYCheckSignals ( FILE * );#ifdef HAVE_SIGACTIONint SYiCheckSig( fp, sig, signame )FILE *fp;int sig;char *signame;{static int firstmsg = 1;struct sigaction libsig;sigaction( sig, NULL, &libsig);if (libsig.sa_handler != SIG_IGN && libsig.sa_handler != SIG_DFL) { if (firstmsg) { firstmsg = 0; fprintf( fp, "Some signals have been changed. This is not an error\n\but rather is a warning that user programs should not redefine the signals\n\listed here\n" ); } fprintf( fp, "Signal %s has been changed\n", signame ); return 1; }return 0;}#elseint SYiCheckSig( fp, sig, signame )FILE *fp;int sig;char *signame;{void (*oldsig)();static int firstmsg = 1;oldsig = signal(sig,SIG_IGN);if (oldsig != SIG_IGN && oldsig != SIG_DFL) { if (firstmsg) { firstmsg = 0; fprintf( fp, "Some signals have been changed. This is not an error\n\but rather is a warning that user programs should not redefine the signals\n\listed here\n" ); } fprintf( fp, "Signal %s has been changed\n", signame ); return 1; }signal(sig,oldsig);return 0;}#endifint SYCheckSignals( fp )FILE *fp;{int ndiff = 0;#ifdef SIGHUPndiff += SYiCheckSig( fp, SIGHUP, "SIGHUP" );#endif#ifdef SIGINTndiff += SYiCheckSig( fp, SIGINT, "SIGINT" );#endif#ifdef SIGQUITndiff += SYiCheckSig( fp, SIGQUIT, "SIGQUIT" );#endif#ifdef SIGILLndiff += SYiCheckSig( fp, SIGILL, "SIGILL" );#endif#ifdef SIGTRAPndiff += SYiCheckSig( fp, SIGTRAP, "SIGTRAP" );#endif#ifdef SIGIOTndiff += SYiCheckSig( fp, SIGIOT, "SIGIOT" );#endif#ifdef SIGABRTndiff += SYiCheckSig( fp, SIGABRT, "SIGABRT" );#endif#ifdef SIGEMTndiff += SYiCheckSig( fp, SIGEMT, "SIGEMT" );#endif#ifdef SIGFPEndiff += SYiCheckSig( fp, SIGFPE, "SIGFPE" );#endif#ifdef SIGBUSndiff += SYiCheckSig( fp, SIGBUS, "SIGBUS" );#endif#ifdef SIGSEGVndiff += SYiCheckSig( fp, SIGSEGV, "SIGSEGV" );#endif#ifdef SIGSYSndiff += SYiCheckSig( fp, SIGSYS, "SIGSYS" );#endif#ifdef SIGPIPEndiff += SYiCheckSig( fp, SIGPIPE, "SIGPIPE" );#endif#ifdef SIGALRMndiff += SYiCheckSig( fp, SIGALRM, "SIGALRM" );#endif#ifdef SIGTERMndiff += SYiCheckSig( fp, SIGTERM, "SIGTERM" );#endif#ifdef SIGURGndiff += SYiCheckSig( fp, SIGURG, "SIGURG" );#endif#ifdef SIGTSTPndiff += SYiCheckSig( fp, SIGTSTP, "SIGTSTP" );#endif#ifdef SIGCONTndiff += SYiCheckSig( fp, SIGCONT, "SIGCONT" );#endif#ifdef SIGCHLDndiff += SYiCheckSig( fp, SIGCHLD, "SIGCHLD" );#endif#ifdef SIGTTINndiff += SYiCheckSig( fp, SIGTTIN, "SIGTTIN" );#endif#ifdef SIGTTOUndiff += SYiCheckSig( fp, SIGTTOU, "SIGTTOU" );#endif#ifdef SIGIOndiff += SYiCheckSig( fp, SIGIO, "SIGIO" );#endif#ifdef SIGPOLLndiff += SYiCheckSig( fp, SIGPOLL, "SIGPOLL" );#endif#ifdef SIGXCPUndiff += SYiCheckSig( fp, SIGXCPU, "SIGXCPU" );#endif#ifdef SIGXFSZndiff += SYiCheckSig( fp, SIGXFSZ, "SIGXFSZ" );#endif#ifdef SIGVTALRMndiff += SYiCheckSig( fp, SIGVTALRM, "SIGVTALRM" );#endif#ifdef SIGPROFndiff += SYiCheckSig( fp, SIGPROF, "SIGPROF" );#endif#ifdef SIGWINCHndiff += SYiCheckSig( fp, SIGWINCH, "SIGWINCH" );#endif#ifdef SIGLOSTndiff += SYiCheckSig( fp, SIGLOST, "SIGLOST" );#endif#ifdef SIGUSR1ndiff += SYiCheckSig( fp, SIGUSR1, "SIGUSR1" );#endif#ifdef SIGUSR2ndiff += SYiCheckSig( fp, SIGUSR2, "SIGUSR2" );#endifreturn ndiff;}int main( int argc, char **argv ){ int err; MPI_Init( &argc, &argv ); err = SYCheckSignals( stdout ); Test_Waitforall( ); MPI_Finalize(); return err;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?