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

📄 ps_sun.c

📁 进程列表程序
💻 C
字号:
#define _KMEMUSER#include <sys/proc.h>#include <kvm.h>#include <fcntl.h> char regexpstr[256];#define INIT            register char *sp=regexpstr;#define GETC()          (*sp++)#define PEEKC()         (*sp)#define UNGETC(c)       (--sp)#define RETURN(pointer) return(pointer);#define ERROR(val)#include <regexp.h> pid_tgetpidbyname(char *name,pid_t skipit){    kvm_t *kd;    char **arg;    int error;    char *p_name=NULL;    char expbuf[256];    char **freeme;    int curpid;    struct user * cur_user;    struct user myuser;    struct proc * cur_proc;      if((kd=kvm_open(NULL,NULL,NULL,O_RDONLY,NULL))==NULL){        return(-1);    }    sprintf(regexpstr,"^.*/%s$",name);    compile(NULL,expbuf,expbuf+256,'\0');     while(cur_proc=kvm_nextproc(kd)){        curpid = cur_proc->p_pid;        if((cur_user=kvm_getu(kd,cur_proc))!=NULL){            error=kvm_getcmd(kd,cur_proc,cur_user,&arg,NULL);            if(error==-1){                if(cur_user->u_comm[0]!='\0'){                    p_name=cur_user->u_comm;                }            }            else{                p_name=arg[0];            }        }        if(p_name){            if(!strcmp(p_name,name)){                if(error!=-1){                    free(arg);                }                if(skipit!=-1 && ourretval==skipit){                    ourretval=-1;                }                else{                    close(fd);                    break;                }                break;            }            else{                if(step(p_name,expbuf)){                    if(error!=-1){                        free(arg);                    }                    break;                }            }        }        if(error!=-1){            free(arg);        }        p_name=NULL;    }    kvm_close(kd);    if(p_name!=NULL){        return(curpid);    }    return (-1);}

⌨️ 快捷键说明

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