linux里返回状态命令行,linux下如何获取进程的id和命令行参数

liunx上获取进程ID和启动参数的命令主要有以下两个:如ps –ef | grep mysql //查看mysql的进程;查看后台运行的进程;

查看用户的UID、GID及所归属的用户组--ps |grep 后面要加要找的进程。是列出主要的进程。而ps -aux|grep 列出所有的进程 并在其中查找

一般我们用ps -aux|grep 这个命令比较通用,前后台的程序都可以查找。

我们用管道来执行这个命令,并获取相关的信息,示例代码如下:

int Get_cmdline(void)

{

FILE* ptr;

char* tok = NULL;

char* m_sCommand = "ps -ax|grep 进程名";

int t_id = 0;//进程ID

char line[128] = {0};

/*Read data pipeline-----command of execution results*/

if (ptr = popen(m_sCommand, "r"))

{

while (fgets(line, sizeof(line), ptr) != NULL)

{

/*Find substring*/

/*STAT 进程状态(有以下几种)*D 无法中断的休眠状态(通常 IO 的进程);R 正在运行可中在队列中可过行的;S 处于休眠状态;T 停止或被追踪;W 进入内存交换(从内核2.6开始无效);

*X 死掉的进程(从来没见过);Z 僵尸进程;*优先级高的进程N 优先级较低的进程;L 有些页被锁进内存;s 进程的领导者(在它之下有子进程);

*+l 多进程的(使用CLONE_THREAD,类似 NPTL pthreads;+ 位于后台的进程组;*/

if(strstr(line,"l+") || strstr(line,"named.conf") || strstr(line,"l"))

{

/*find the parametel of cmdline */

tok = strstr(line,"/");

if(tok)

{

strcpy(temp,tok+1);

strcpy(namedline,strstr(temp,"/"));

/*find the id of named*/

sscanf(line,"%d",&t_id);

}

}

break;

}

pclose(ptr);

return SUCESS;/*Custom macro*/

}

else

{

return FAIL;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值