到libproc.dylib的低级绑定

libproc的Python项目详细描述


一个关于libproc.dylib的低层绑定的描述和包装。这个库公开了有关os x的
进程的内部内核数据。它是在os x 10.7.5上开发和测试的,使用i386
体系结构。



关于系统调用。函数的签名
(内部私有原型取自
``libproc.c``):

//同上。
uint64_t arg,//同上,有时未使用。
void*buffer,//输出缓冲区。
int buffer size//输出缓冲区大小。
);

唯一的低级api是```` proc_info()``本身。


此函数的行为取决于第一个参数*callnum*,它是许多内核接口的典型参数。不幸的是,
*callnum*的不同值没有任何官方名称(在源代码中,它们只是硬编码常量。我使用了一个约定*proc_callnum_xxx*,其中*xxx*
是从由该值多路复用的内核函数的名称派生出来的。


我所做的值是::

proc_callnum_pidinfo=2
proc_callnum_pidfdinfo=3
proc_callnum_kernmsgbuf=4
proc_callnum_setcontrol=5
proc_callnum_pidfileportinfo=6

*缓冲区*,它将计算
,并返回要传递的缓冲区的正确大小。从系统调用的源代码来看,它做出了一些保守的估计,但我怀疑它仍然很活泼(一个分叉炸弹可能会使第一次调用和第二次调用之间的值无效)。


callnum 1
--


注意:
this*callnum*只有一个liproc别名*proc\u callnum\u listpids*

含义:

*pid*:
包含要获取的进程列表的类型。可能的值是下面列出的
*proc懔u xxx*常量之一。

:数据:`~libproc.proc懔u all懔pids`:
返回完整进程表。
:数据:`~libproc.proc懔u pgrp懔only`:
返回具有给定进程组id的进程列表
:data:`~libproc.proc tty嫒only`:
返回附加到给定tty的进程列表
:data:`~libproc.proc Uid嫒only`:
返回具有给定用户ID的进程列表。
:data:`~libproc.proc ruid嫒only`:
返回具有给定用户ID的进程列表给定的实际用户ID。
:数据:`~libproc.proc ppid_only`:
返回作为给定进程子进程的列表。

*flavor*:
包含返回的进程的可选筛选参数。这里传递的值与每个进程所需的属性
进行比较。唯一的例外是*proc_all_pids*不进行过滤。


*arg*:
此参数未使用。

*buffer*:
此参数是指向输出缓冲区的指针。缓冲区是一个
数组:class:`python:cTypes.c\in具有适当大小的t(由进程表的大小决定)。


作为约定,可以传递一个none值(它映射到一个*空*指针)
以向内核请求缓冲区的大小。然后调用返回正确的缓冲区大小(字节)。


*buf_size*:
缓冲区大小,以字节为单位。

注意:
this*callnum*只有一个liproc别名*proc\u callnum\u pidinfo*


this*callnum*当前未记录。


callnum 3
--


。注意:
this*callnum*只有一个liproc别名*proc\u callnum\u pidfdinfo*


this*callnum*当前未记录。


callnum 4
--


注意:
this*callnum*只有一个liproc别名*proc\u callnum\u kernmsgbuf*


this*callnum*当前未记录。


callnum 5
--


注::
此*callnum*只有一个liproc别名*proc\u callnum\u setcontrol*


此*callnum*当前未记录。


callnum 6
——


……注意:
this*callnum*只有一个liproc别名*proc\u callnum_pidfileportinfo*

this*callnum*目前没有文档记录。

适当的论据,处理缓冲区分配并返回友好的pythonic值。


-:func:`~libproc.libproc.get-pids\u for_ruid()`。
-:func:`~libproc.get-pids\u for_ppid()`。
-:func:`~libproc.get-pids\u for_ppgrp()`。
-:func:` ~libproc.get-pids\u-pids\u for_tty()`。






















:历史

======

0.2(2015-09-20)
----


*初始版本只公开*callnum*1
(:data:`~libproc.proc\u callnum\u listpids`)以及pythonic包装器和
综合演示工具(``exampes/listpids.py`)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用prepared语句在oracle中插入日期   对点具有双重值的java   使用多个通配符的java请求映射   java Springboot为什么要设置springbootstartertomcat   除了对JavaBean的请求之外,还使用servletContext的servlet   java如何清除OCSID。返回到池的连接时的CLIENTID JDBC客户端信息属性   将整型数组转换为光栅Java   java使用对象引用作为互斥锁   java为什么在编程语言中使用sin函数返回奇怪的sin值不像计算器   java如何将JButton链接到对象并调用相关方法   php用Java发送POST数据   导航属性的java模拟加载   java多个活动错误Android试图对空对象引用调用虚拟方法“”   java Android更改ActionBar文本颜色   如何使用带有java反射且不带开关的parant引用创建子类