• 设为首页
  • 收藏本站
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    查看: 990|回复: 4

    发一份linux 通过使用进程名就可以直接杀掉进程 的C 代码

    [复制链接]

    该用户从未签到

    4

    主题

    37

    回帖

    1137

    积分

    二级逆天

    积分
    1137

    终身成就奖特殊贡献奖

    QQ
    发表于 2018-3-12 18:04:14 | 显示全部楼层 |阅读模式
    #include <dirent.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <unistd.h>
    #include <errno.h>
    #include <sys/types.h>
    #include <sys/wait.h>


    /*
    struct dirent
    {
    long d_ino;
        off_t d_off;
        unsigned short d_reclen;
        unsigned char d_type;
        char d_name [NAME_MAX+1];
    }
    */
    char rild_pid[NAME_MAX+1];
    int find_rild_flag=0;

    #define READ_BUF_SIZE   2048

    void  find_pid_by_name( char* pidName)
    {
        DIR *dir;
        struct dirent *next;
        long* pidList=NULL;
        int i=0;

            ///proc中包括当前的进程信息,读取该目录
        dir = opendir("/proc");
        if (!dir)
            printf("Cannot open /proc");
         
            //遍历
        while ((next = readdir(dir)) != NULL) {
            FILE *status;
            char filename[READ_BUF_SIZE];
            char buffer[READ_BUF_SIZE];
            char name[READ_BUF_SIZE];

            /* Must skip ".." since that is outside /proc */
            if (strcmp(next->d_name, "..") == 0)
                continue;

            /* If it isn't a number, we don't want it */
            if (!isdigit(*next->d_name))
                continue;
                    //设置进程
            sprintf(filename, "/proc/%s/status", next->d_name);
            if (! (status = fopen(filename, "r")) ) {
                continue;
            }
            if (fgets(buffer, READ_BUF_SIZE-1, status) == NULL) {
                fclose(status);
                continue;
            }
            fclose(status);

                    //得到进程id
            /* Buffer should contain a string like "Name:   binary_name" */
            sscanf(buffer, "%*s %s", name);
            if (strcmp(name, pidName) == 0) {
    #if 0            
                pidList=realloc( pidList, sizeof(long) * (i+2));
                pidList[i++]=strtol(next->d_name, NULL, 0);

    #else
           memcpy(rild_pid,next->d_name,strlen(next->d_name));
           rild_pid[strlen(next->d_name)]='\0';
           find_rild_flag=1;
           printf("find the pid number for zytoge process  next->d_name=%s\n",next->d_name);        
           printf("find the pid number for zygote process  zygote_pid=%s\n",rild_pid);   

    #endif

            }
        }

    #if 0

        if (pidList) {
            pidList=0;
        }

    #endif   
       
    }





    int main()
    {


       
        int pid;
        int err;
          find_pid_by_name( "zygote");
        if( find_rild_flag)
        {

            printf("the original ZYGOTE process PID is = %s \n",rild_pid);
            pid = atoi(rild_pid);
            printf("pid =%d\n",pid);
                 err = kill(pid, SIGKILL);
                   if (err < 0)
               {
                        printf("KILL ZYGOTE  PROCESS FAILED BECAUSE could not kill pid: %d\n", pid);
                return 0;
                  }

        }
        else
        {

            printf("KILL ZYGOTE PROCESS FAILED BECAUSE NO RILD PROCESS FIND\n");
            return 0;


        }
        printf("****************KILL ZYGOTE PROCESS SUCCESS *************\n");
        return 0;

    }

    代码中 以 android 系统 下的  "zygote” 进程 为例 , 若要杀掉其他进程 直接将 “zygote"  字符串改成要杀掉的进程 名即可 (执行时要有相应的权限)
    嵌入式下编译:


    arm-linux-gcc  filename.c  -static  -o  filename
    运行:   chmod 777 filename
                  ./filename
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-7 09:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    4981

    回帖

    3456

    积分

    二级逆天

    积分
    3456

    终身成就奖社区居民优秀斑竹奖

    QQ
    发表于 2018-3-12 20:03:50 | 显示全部楼层
    谢谢分享linux 通过使用进程名就可以直接杀掉进程 的C 代码实现程序
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-29 20:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    48

    主题

    6492

    回帖

    7755

    积分

    二级逆天

    积分
    7755

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2018-3-13 08:12:21 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-29 20:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    48

    主题

    6492

    回帖

    7755

    积分

    二级逆天

    积分
    7755

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2018-3-13 08:12:30 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    2415

    回帖

    11

    积分

    二级逆天

    积分
    11

    社区居民终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2018-3-13 08:31:07 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    QQ 手机版 小黑屋 监管台 遇到问题请联系QQ1308068381 逆天PCB论坛

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表