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

📄 sgiaction_sample.c

📁 Linux网络编程PPT和源码,供学习参考
💻 C
字号:
#include <signal.h>#include <unistd.h>#include <sys/types.h>	void sig_handle(int signum,siginfo_t *sig_info,void *other){	//用于防止同时发送多个信号(采用阻塞的方法)	sigset_t siglist;	sigemptyset(&siglist);	//初始化信号集 siglist	sigaddset(&siglist,SIGUSR2);	//将SIGUSR2加入信号集siglist	sigprocmask(SIG_BLOCK,&siglist,NULL);	//改变当前的阻塞信号为siglist	int i;	printf("start...\n");	for(i=0;i<5;i++)	{		printf("ding....\n");		sleep(1);	}	printf("end...\n");	printf("signal value %d\n",sig_info->si_int);	//printf("send process id %d\n",sig_info->si_pid);}int main(int argc,char *argv[]){	pid_t child;		child=fork();	//创建子进程	if(child==0)	{		struct sigaction sigct;		sigct.sa_sigaction=sig_handle;	//关联信号处理函数		sigct.sa_flags=SA_SIGINFO;		sigaction(SIGUSR2,&sigct,NULL);	//安装用户自定义信号		while(1)		{			//printf("ssss\n");			sleep(1);			}		exit(0);		}	sleep(2);	union  sigval sig_val;	sig_val.sival_int=200;	//设定信号携带的数据值	printf("parent id %d\n",getpid());	sigqueue(child,SIGUSR2,sig_val);	//给子进程发送SIGUSR2信号,并携带sig_val	return 0;}

⌨️ 快捷键说明

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