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

📄 my_kill.c

📁 此源码是著名的教材BeginningLinux Programming中文名字叫Linux程序设计书中的源代码
💻 C
字号:
// 为简化实现,本程序只支持按信号的编号而不是信号名发送信号
// 感兴趣的读者可以按照自己的系统下的signal.h增加名字到编号的映射表
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/types.h>

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

	/*首先检查参数个数*/;
	if (argc != 2 && argc != 4) {
		printf("Usage: ./my_kill <-s signum> [PID]\n");
		exit(0);
	}
	
	/*从命令行参数解析出信号编号*/
	for (i=1; i<argc; i++) {
		if (!strcmp(argv[i], "-s")) {
			signum = atoi(argv[i+1]);
			break;
		}
	}

	/*解析出进程号*/
	if (argc == 2) {
		pid = atoi(argv[1]);
	} else {
		for (j=1; j<argc; j++) {
			if (j != i && j != i+1) {
				pid = atoi(argv[j]);
				break;
			}
		}
	}

	if (kill(pid, signum) < 0) {
		perror("kill");
		exit(1);
	}

	return 0;
} 

⌨️ 快捷键说明

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