kill命令的简单实现
kill命令的简单实现
目标:简单实现kill命令
功能:
- 向进程发送信号
- 列出信号名字
参数:
- -l 列出信号名字
- -s (s=1、2、3.....)发送的信号代号
环境
ubuntu 14.04 gcc.real (Ubuntu 4.8.2-19ubuntu1) 4.8.2
代码
新手菜鸟 如有错误 欢迎指正
#include<stdio.h>
#include<signal.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>
int sent_sig(int signum,char *pid);
void list_signum(char *optarg);
unsigned int chartonum(char *str);
int main(int argc,char **argv)
{
int opt;
int signum=0;
char optstring[]=":1,2,3,4,5,6,7,8,9,l:";
while((opt=getopt(argc,argv,optstring))!=-1)
switch(opt){
case '1': case '2': case '3':
case '4': case '5': case '6':
case '7': case '8': case '9':
signum=opt-'0';
break;
case 'l':
list_signum(optarg);
break;
case ':':
printf("-l need argument!\n");
exit(1);
case '?':
printf("unknow option!\n");
exit(1);
}
if(argc==1){
printf("no option!,no pid\n");
exit(1);
}
if(optind==argc){
if(kill(-1,signum)!=0){
printf("wrong in sent sig to all process!\n");
exit(1);
}
else
return 0;
}
for(;optind<argc;optind++){
if(!sent_sig(signum,argv[optind])){
printf("no such process\n");
exit(1);
}
}
return 0;
}
unsigned int chartonum(char *str)
{
char *s=str;
unsigned int pid=0;
while(*s){
pid=pid*10+(*s-'0');
s++;
}
return pid;
}
int sent_sig(int signum,char *str)
{
unsigned int pid=chartonum(str);
if(signum==0)
signum=9;
if(kill(pid,signum)!=0)
return 0;
else
return 1;
}
void list_signum(char *optarg)
{
char *str;
int signum=chartonum(optarg);
str=strsignal(signum);
printf("%s\n",str);
}
kill命令的简单实现的更多相关文章
- kill命令
*杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志. 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: # kill -pid 注释:标准的kill命令通 ...
- linux kill 命令【待完善】【转】
kill 命令用来处理进程, 在linux中即可使用kill -9 pid 杀死进程 , 也可使用kill -KILL pid 等价的命令来执行. HUP 1 终端断线 INT 2 中断(同 Ctrl ...
- linux命令总结kill命令详解
1.作用 kill命令用来中止一个进程. 2.格式 kill [ -s signal | -p ] [ -a ] pid ... kill -l [ signal ] 3.参数 -s:指定发送的信号. ...
- centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课
centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数 ...
- Linux下kill命令
首先了解什么是信号:信号是进程级的中断请求,系统定义了30余种信号,kill是管理员用来发送信号的一种手段. 功能说明:删除执行中的程序或工作. 语 法:kill [-s <信息名称或编号> ...
- PS命令和kill命令
名称:ps使用权限:所有使用者使用方式:ps [options] [--help]说明:显示瞬间行程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A ...
- [原]那些年整理的Linux常用命令,简单明了
查询相关 find 按规则查找某个文件或文件夹,包括子目录 find . -name '*.sh' -- 以.sh结尾的文件 find . -name '*channel*' -- 包含channel ...
- MariaDB kill命令
MariaDB的KILL命令不只可以杀掉连接,而且可以只杀掉某连接当前的SQL,而不断开连接.KILL QUERY thread_id;kill thread_id可以杀掉当前的连接,而kill QU ...
- 每天一个linux命令(42):kill命令
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...
随机推荐
- Unity3D如何接入第三方的SDK - iOS篇
来源:http://blog.csdn.net/smlisi2/article/details/8786485 授人以鱼,不如授人以渔”,以UNITY3D调用iOS版的91SDK为例,利用C# / C ...
- 通过扩展redis-cli来实现在redis集群中移动槽位
下面的扩展代码基于redis 5.0.2进行扩展, 对于其他的redis版本, 我没有进行相关的测试.考虑到redis集群的修改频率,这段代码应该同时适用于其他的redis版本. 下面为修改的代码: ...
- React官方中文文档【安装】
https://reactjs.org/docs/getting-started.html //React官方文档地址 1.入门 此页面是React文档和相关资源的概述. React是一个用于构建用 ...
- MongoDB/聚合/MR
管道与Aggregation: 文档结构如下: { "_id" : 1, "item" : "abc", "price" ...
- generator 和yeild
参考 https://www.cnblogs.com/xybaby/p/6322376.html 使用yield那么该函数就变成了一个生成器方法. def zheng(n,m): if n<m: ...
- python---Numpy模块中线性代数运算,统计和数学函数
NUMPY告一段落,接下来,进入pandas. import numpy as np # Numpy 线性代数运算 # Numpy 统计和数学函数 print('==========计算矩阵与其转置矩 ...
- Java精通并发-多线程同步关系实例剖析与详解
在上一次https://www.cnblogs.com/webor2006/p/11422587.html中通过实践来解了一个案例,先来回顾一下习题: 编写一个多线程程序,实现这样的一个目标: 1.存 ...
- python处理yml
#pip install pyyamlimport yaml #yaml文件转成字典 with open('a.yml','rb')as f: res = yaml.load(f,Loader=yam ...
- Hibernate的关联关系映射
技术分析之Hibernate的关联关系映射之一对多映射(重点) 1. JavaWEB中一对多的设计及其建表原则 2. 先导入SQL的建表语句 ...
- Zookeeper数据类型、节点类型、角色、watcher监听机制
1.Zookeeper数据类型:层次化目录结构+少量数据 Zookeeper包含层次化的目录结构,每个Znode都有唯一的路径标识,Znode可以包含数据和子节点. 其中Znode数据可以有多个版本, ...