⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 signals.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/* $Header: /home/harrison/c/tcgmsg/ipcv4.0/RCS/signals.c,v 1.1 91/12/06 17:27:22 harrison Exp Locker: harrison $ */#include <signal.h>#include "sndrcvP.h"#if defined(SUN) || defined(ALLIANT) || defined(ENCORE) || defined(SEQUENT) || \    defined(AIX) || defined(NEXT)#include <sys/wait.h>#endifextern void Error();int SR_caught_sigint = 0;/*ARGSUSED*/#if (defined(ENCORE) || defined(SEQUENT) || defined(ARDENT))int SigintHandler(sig, code, scp, addr)#elsevoid SigintHandler(sig, code, scp, addr)#endif     int sig, code;     struct sigcontext *scp;     char *addr;{  SR_caught_sigint = 1;  Error("SigintHandler: signal was caught",(long) code);}void TrapSigint()/*  Trap the signal SIGINT so that we can propagate error  conditions and also tidy up shared system resources in a  manner not possible just by killing everyone*/{#if defined(ENCORE) || defined(SEQUENT) || defined(ARDENT)  if ( signal(SIGINT, SigintHandler) == (int (*)()) -1)    Error("TrapSigint: error from signal setting SIGINT",(long) SIGINT);#else  if ( signal(SIGINT, SigintHandler) == (void (*)()) -1)    Error("TrapSigint: error from signal setting SIGINT",(long) SIGINT);#endif}void ZapChildren()/*  kill -SIGINT all of my beloved children*/{  while (SR_nchild--)    (void) kill((int) SR_pids[SR_nchild], SIGINT);}/*ARGSUSED*/#if (defined(ENCORE) || defined(SEQUENT) || defined(ARDENT))int SigchldHandler(sig, code, scp, addr)#elsevoid SigchldHandler(sig, code, scp, addr)#endif     int sig, code;     struct sigcontext *scp;     char *addr;{  int status, pid;  #if defined(ALLIANT) || defined(ENCORE) || defined(SEQUENT) || defined(NEXT)  union wait ustatus;#endif#if defined(ALLIANT) || defined(ENCORE) || defined(SEQUENT) || defined(NEXT)  pid = wait(&ustatus);  status = ustatus.w_status;#else  pid = wait(&status);#endif  SR_caught_sigint = 1;  Error("Child process terminated prematurely, status=",(long) status);}void TrapSigchld()/*  Trap SIGCHLD so that can tell if children die unexpectedly.*/{#if defined(ENCORE) || defined(SEQUENT) || defined(ARDENT)  if ( signal(SIGCHLD, SigchldHandler) == (int (*)()) -1)    Error("TrapSigchld: error from signal setting SIGCHLD",		  (long) SIGCHLD);#else  if ( signal(SIGCHLD, SigchldHandler) == (void (*)()) -1)    Error("TrapSigchld: error from signal setting SIGCHLD",		  (long) SIGCHLD);#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -