我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 998|回复: 4

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

[复制链接]
  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    9

    主题

    47

    回帖

    1172

    积分

    二级逆天

    积分
    1172

    终身成就奖特殊贡献奖

    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]初来乍到

    112

    主题

    6493

    回帖

    7867

    积分

    二级逆天

    积分
    7867

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

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

    使用道具 举报

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

    [LV.1]初来乍到

    112

    主题

    6493

    回帖

    7867

    积分

    二级逆天

    积分
    7867

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

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

    使用道具 举报

    该用户从未签到

    2

    主题

    2415

    回帖

    11

    积分

    二级逆天

    积分
    11

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

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

    使用道具 举报

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

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表