如何在Mac OSX C 中找到任何过程的PID
How to find the PID of any process in Mac OSX C++
我需要使用C 在Mac OSX上找到某个程序的PID并将其保存为变量。一段时间以来,我一直在寻找这个问题的答案,我找不到一个详细的答案或有效的答案。如果有人对如何执行此操作有任何想法,请回复。谢谢!
您可以与proc_pidinfo
结合使用proc_listpids
:
#include <libproc.h>
#include <stdio.h>
#include <string.h>
void find_pids(const char *name)
{
pid_t pids[2048];
int bytes = proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids));
int n_proc = bytes / sizeof(pids[0]);
for (int i = 0; i < n_proc; i++) {
struct proc_bsdinfo proc;
int st = proc_pidinfo(pids[i], PROC_PIDTBSDINFO, 0,
&proc, PROC_PIDTBSDINFO_SIZE);
if (st == PROC_PIDTBSDINFO_SIZE) {
if (strcmp(name, proc.pbi_name) == 0) {
/* Process PID */
printf("%d [%s] [%s]n", pids[i], proc.pbi_comm, proc.pbi_name);
}
}
}
}
int main()
{
find_pids("bash");
return 0;
}
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 是否删除在对象构造过程中创建的对象
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 链表c++插入,所有情况都已检查,但没有任何工作
- C++模板函数,用于比较任何无符号整数和有符号整数
- 如何在鼠标挂钩过程中检测拖动
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 尝试摆脱任何堆内存分配
- 是否有任何C++功能可以对地图进行排序?
- 打印时有二叉树问题.用户输入不打印任何内容
- 如何在Mac OSX C 中找到任何过程的PID
- 操作系统在C 汇编过程中是否有任何作用
- 调用存储过程时未检索到任何数据
- 在一行中定义多个变量,这能为构建过程提供任何优化吗?