到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`)
进程的内部内核数据。它是在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_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`)