当前位置: 技术问答>linux和unix
linux下如何获取另一进程ID(编程实现)
来源: 互联网 发布时间:2016-05-12
本文导语: 我需要在一个程序中获取另一个进程PID,应该如何实现? 我知道可以用命令:ps -ax | grep "进程名" | awk '{print $1}' 不过需要用C语言实现,应该怎么做? 请大家指教,谢谢! | #include #include #inclu...
我需要在一个程序中获取另一个进程PID,应该如何实现?
我知道可以用命令:ps -ax | grep "进程名" | awk '{print $1}'
不过需要用C语言实现,应该怎么做?
请大家指教,谢谢!
我知道可以用命令:ps -ax | grep "进程名" | awk '{print $1}'
不过需要用C语言实现,应该怎么做?
请大家指教,谢谢!
|
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 1024
int isdir(char *path)
{
struct stat buf;
if(lstat(path,&buf)d_name,".")==0)||(strcmp(p->d_name,"..")==0))
continue;
else
{
memset(buf1,0,sizeof(buf1));
sprintf(buf1,"/proc/%s",p->d_name);
if(isdir(buf1))
{
memset(buf2,0,sizeof(buf2));
sprintf(buf2,"%s/exe",buf1);
if(access(buf2,F_OK)==0)
{
memset(path1,0,sizeof(path1));
if(readlink(buf2,path1,sizeof(path1))==-1)
continue;
ptr=getfile(path1);
if(strcmp(ptr,argv[1])==0)
{
memset(path2,0,sizeof(path2));
sprintf(path2,"%s/status",buf1);
ptr=readstatus(path2);
}
}
}
}
}
closedir(db);
}
|
system("ps -ax ¦ grep "进程名" ¦ awk '{print $1}' ")
|
将输出重定向到临时文件,再读取.
|
把结果写进临时文件,再读进来吧
不知道有没有什么更好的办法
ps好像也是循环去遍历/proc/目录下的进程的
stat64("/proc/5", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/5/stat", O_RDONLY) = 7
read(7, "5 (kswapd) S 1 1 1 0 -1 2112 0 0"..., 1023) = 131
close(7) = 0
open("/proc/5/status", O_RDONLY) = 7
read(7, "Name:tkswapdnState:tS (sleeping)"..., 1023) = 290
close(7) = 0
open("/proc/5/cmdline", O_RDONLY) = 7
read(7, "", 2047) = 0
close(7) = 0
open("/proc/5/environ", O_RDONLY) = 7
read(7, "", 2047) = 0
close(7) = 0
stat64("/proc/6", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
不知道有没有什么更好的办法
ps好像也是循环去遍历/proc/目录下的进程的
stat64("/proc/5", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
open("/proc/5/stat", O_RDONLY) = 7
read(7, "5 (kswapd) S 1 1 1 0 -1 2112 0 0"..., 1023) = 131
close(7) = 0
open("/proc/5/status", O_RDONLY) = 7
read(7, "Name:tkswapdnState:tS (sleeping)"..., 1023) = 290
close(7) = 0
open("/proc/5/cmdline", O_RDONLY) = 7
read(7, "", 2047) = 0
close(7) = 0
open("/proc/5/environ", O_RDONLY) = 7
read(7, "", 2047) = 0
close(7) = 0
stat64("/proc/6", {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0