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命令的简单实现的更多相关文章

  1. kill命令

    *杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志.   首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:   # kill -pid   注释:标准的kill命令通 ...

  2. linux kill 命令【待完善】【转】

    kill 命令用来处理进程, 在linux中即可使用kill -9 pid 杀死进程 , 也可使用kill -KILL pid 等价的命令来执行. HUP 1 终端断线 INT 2 中断(同 Ctrl ...

  3. linux命令总结kill命令详解

    1.作用 kill命令用来中止一个进程. 2.格式 kill [ -s signal | -p ] [ -a ] pid ... kill -l [ signal ] 3.参数 -s:指定发送的信号. ...

  4. centos MySQL主从配置 ntsysv chkconfig setup命令 配置MySQL 主从 子shell MySQL备份 kill命令 pid文件 discuz!论坛数据库读写分离 双主搭建 mysql.history 第二十九节课

    centos  MySQL主从配置 ntsysv   chkconfig  setup命令  配置MySQL 主从 子shell  MySQL备份  kill命令  pid文件  discuz!论坛数 ...

  5. Linux下kill命令

    首先了解什么是信号:信号是进程级的中断请求,系统定义了30余种信号,kill是管理员用来发送信号的一种手段. 功能说明:删除执行中的程序或工作. 语 法:kill [-s <信息名称或编号> ...

  6. PS命令和kill命令

    名称:ps使用权限:所有使用者使用方式:ps [options] [--help]说明:显示瞬间行程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A   ...

  7. [原]那些年整理的Linux常用命令,简单明了

    查询相关 find 按规则查找某个文件或文件夹,包括子目录 find . -name '*.sh' -- 以.sh结尾的文件 find . -name '*channel*' -- 包含channel ...

  8. MariaDB kill命令

    MariaDB的KILL命令不只可以杀掉连接,而且可以只杀掉某连接当前的SQL,而不断开连接.KILL QUERY thread_id;kill thread_id可以杀掉当前的连接,而kill QU ...

  9. 每天一个linux命令(42):kill命令

    Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须 ...

随机推荐

  1. Unity3D如何接入第三方的SDK - iOS篇

    来源:http://blog.csdn.net/smlisi2/article/details/8786485 授人以鱼,不如授人以渔”,以UNITY3D调用iOS版的91SDK为例,利用C# / C ...

  2. 通过扩展redis-cli来实现在redis集群中移动槽位

    下面的扩展代码基于redis 5.0.2进行扩展, 对于其他的redis版本, 我没有进行相关的测试.考虑到redis集群的修改频率,这段代码应该同时适用于其他的redis版本. 下面为修改的代码: ...

  3. React官方中文文档【安装】

    https://reactjs.org/docs/getting-started.html  //React官方文档地址 1.入门 此页面是React文档和相关资源的概述. React是一个用于构建用 ...

  4. MongoDB/聚合/MR

    管道与Aggregation: 文档结构如下: { "_id" : 1, "item" : "abc", "price" ...

  5. generator 和yeild

    参考 https://www.cnblogs.com/xybaby/p/6322376.html 使用yield那么该函数就变成了一个生成器方法. def zheng(n,m): if n<m: ...

  6. python---Numpy模块中线性代数运算,统计和数学函数

    NUMPY告一段落,接下来,进入pandas. import numpy as np # Numpy 线性代数运算 # Numpy 统计和数学函数 print('==========计算矩阵与其转置矩 ...

  7. Java精通并发-多线程同步关系实例剖析与详解

    在上一次https://www.cnblogs.com/webor2006/p/11422587.html中通过实践来解了一个案例,先来回顾一下习题: 编写一个多线程程序,实现这样的一个目标: 1.存 ...

  8. python处理yml

    #pip install pyyamlimport yaml #yaml文件转成字典 with open('a.yml','rb')as f: res = yaml.load(f,Loader=yam ...

  9. Hibernate的关联关系映射

    技术分析之Hibernate的关联关系映射之一对多映射(重点)        1. JavaWEB中一对多的设计及其建表原则        2. 先导入SQL的建表语句                 ...

  10. Zookeeper数据类型、节点类型、角色、watcher监听机制

    1.Zookeeper数据类型:层次化目录结构+少量数据 Zookeeper包含层次化的目录结构,每个Znode都有唯一的路径标识,Znode可以包含数据和子节点. 其中Znode数据可以有多个版本, ...