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

📄 signal.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char *sccsid = "@(#)signal.c	4.1	ULTRIX	7/3/90";#endif not lint/* * Almost backwards compatible signal. *//* *	Modification History * * 13-Jan-1988 -- map *	Set SV_OLDSIG flag so kernel can perform System V/POSIX behavior. *	In BSD mode this flag will have no effect. */#include <signal.h>#include <errno.h>void (*signal(s, a))()	register int s;	void  (*a)();{	struct sigvec osv, sv;	static int mask[NSIG];		/* saved across calls */	static int flags[NSIG];		/* saved across calls */	extern int errno;	if (s < 0 || s >= NSIG) {		errno = EINVAL;		return (BADSIG);	}	sv.sv_handler = a;	sv.sv_mask = mask[s];	sv.sv_flags = flags[s];	sv.sv_flags |= SV_OLDSIG; 	/* Mark as called from signal() */	if (sigvec(s, &sv, &osv))	/* try it in one syscall */		return (BADSIG);	if (sv.sv_mask != osv.sv_mask || sv.sv_flags != osv.sv_flags) {	/* something is different or 1st time thru - save off mask and flags */		mask[s]     = osv.sv_mask;		sv.sv_mask  = osv.sv_mask;		flags[s]    = osv.sv_flags;		sv.sv_flags = osv.sv_flags;		sv.sv_flags |= SV_OLDSIG; 	/* Mark as called from signal() */			if (sigvec(s, &sv, (struct sigvec *)0) < 0)			return (BADSIG);	}	return (osv.sv_handler);}

⌨️ 快捷键说明

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