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

📄 send_data_signo.c

📁 此源码是著名的教材BeginningLinux Programming中文名字叫Linux程序设计书中的源代码
💻 C
字号:
// 示例利用信号传递数据,本程序发送数据
// 选项-d 后跟待传递的数据,选项-s 后跟待发送的信号,选项-p 后跟目的进程ID
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv)
{
	union sigval	value;
	int		signum = SIGTERM;	// 默认发送SIGTERM
	pid_t		pid;
	int		i;

	/*初始化*/
	value.sival_int = 0;	

	/*检查参数的个数*/
	if (argc != 3 && argc != 5 && argc != 7) {
		printf("./send_data_signo <-d data> <-s signum> [-p][data]\n");
		exit(1);
	}

	/*从命令行参数解析出信号编号、PID以及待传递的数据*/
	for (i=1; i<argc; i++) {
		if (!strcmp(argv[i], "-d")) {
			value.sival_int = atoi(argv[i+1]);
			continue;
		}
		if (!strcmp(argv[i], "-s")) {
			signum = atoi(argv[i+1]);
			continue;
		}
		if (!strcmp(argv[i], "-p")) {
			pid = atoi(argv[i+1]);
			continue;
		}
	}

	/*利用sigqueue给pid发送信号signum,并携带数据value*/
	if (sigqueue(pid, signum, value) < 0) {
		perror("sigqueue");
		exit(1);
	}

	return 0;
}

⌨️ 快捷键说明

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