Ser*_*gio 2 macos kernel pid process objective-c
如何以编程方式获取OS X中给定进程接收和发送的字节数?
如何解决以下问题?
这并不容易,但它是可行的:通过在未记录的"com.apple.network.statistics"上注册系统套接字(PF_SYSTEM),您可以获得每个进程的统计信息.问题是,它只是从注册点开始 - 也就是说,在套接字启动之前你不知道有多少rx/tx.
这没有用户模式标题,但您可以在该站点上使用lsock.h,也可以从xnu自己的源(qv xnu-2422.1.72/bsd/net/ntstat.h)中删除定义.相关部分是:
,NSTAT_MSG_TYPE_SRC_COUNTS = 10004
typedef struct nstat_counts
{
/* Counters */
u_int64_t nstat_rxpackets __attribute__((aligned(8)));
u_int64_t nstat_rxbytes __attribute__((aligned(8)));
u_int64_t nstat_txpackets __attribute__((aligned(8)));
u_int64_t nstat_txbytes __attribute__((aligned(8)));
u_int32_t nstat_rxduplicatebytes;
u_int32_t nstat_rxoutoforderbytes;
u_int32_t nstat_txretransmit;
u_int32_t nstat_connectattempts;
u_int32_t nstat_connectsuccesses;
u_int32_t nstat_min_rtt;
u_int32_t nstat_avg_rtt;
u_int32_t nstat_var_rtt;
} nstat_counts;
typedef struct nstat_msg_src_counts
{
nstat_msg_hdr hdr;
nstat_src_ref_t srcref;
nstat_counts counts;
} nstat_msg_src_counts
Run Code Online (Sandbox Code Playgroud)
顺便提一下,这也是ActivityMonitor在"网络"视图中从10.9开始的方式,因此这几乎是唯一导出的编程API.该站点中的"进程资源管理器"工具也以相同的方式提供每进程统计信息.
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |