#include <stdioh>
#include <stdlibh>
#include <unistdh>
using namespace std;
pid_t getProcessPidByName(const char proc_name)
{
FILE fp;
char buf[100];
char cmd[200] = {'\0'};
pid_t pid = -1;
sprintf(cmd, "pidof %s", proc_name);
if((fp = popen(cmd, "r")) != NULL)
{
if(fgets(buf, 255, fp) != NULL)
{
pid = atoi(buf);
}
}
printf("pid = %d \n", pid);
pclose(fp);
return pid;
}
int main(int argc, char argv)
{
if(argc != 2)
{
printf("Invalid input! \n");
return -1;
}
char process_name = argv[1];
pid_t process_pid = getProcessIDByName((const char)process_name);
return 0;
}
序号 列名 含义
A PID 进程id
B PPID 父进程id
C RUSER Real user name
D UID 进程所有者的用户id
E USER 进程所有者的用户名
F GROUP 进程所有者的组名
G TTY 启动进程的终端名。不是从终端启动的进程则显示为
H PR 优先级
I NI nice值。负值表示高优先级,正值表示低优先级
J P 最后使用的CPU,仅在多CPU环境下有意义
K %CPU 上次更新到现在的CPU时间占用百分比
L TIME 进程使用的CPU时间总计,单位秒
M TIME+ 进程使用的CPU时间总计,单位1/100秒
N %MEM 进程使用的物理内存百分比
O VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
P SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
Q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
R CODE 可执行代码占用的物理内存大小,单位kb
S DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
T SHR 共享内存大小,单位kb
U nFLT 页面错误次数
V nDRT 最后一次写入到现在,被修改过的页面数。
W S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
X COMMAND 命令名/命令行
Y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Z Flags 任务标志,参考 schedh
1)说明:
Linux的所有进程都保存在/proc/目录下,保存形式为:/proc/进程号。进入到进程号目录后,里面有一个cwd链接文件即指向的进程的的目录。
2) *** 作:
A:确定进程号。如:4874;
B:查找进程执行的文件。ps aux | grep 4874;
C:确定进程所在的目录。ll /proc/4874;
getppid() 获取父进程 id,
getpid() 获取当前进程 id
比如
int main()
{
int pid = fork();
if (pid == 0)
{
// child
printf ("ParentID is %d\n", getppid());
}
esle
{
printf("I'm parent, id %d\n", getpid());
wait(NULL);
}
return 0;
}
再就是程序编译没错,但是运行时出现“实时信号 2”
没有源码,谁也帮不上你。 你可以用 gdb去调试。
以上就是关于LINUX下C++编程如何获得某进程的ID全部的内容,包括:LINUX下C++编程如何获得某进程的ID、在linux里,怎样得到另一个进程的进程号、Linux怎么根据进程号,找对应的进程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)