首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从进程内部监视unix资源

从进程内部监视unix资源
EN

Stack Overflow用户
提问于 2012-04-09 06:36:47
回答 1查看 128关注 0票数 2

我从尝试分叉()或生成线程中获得了一堆EAGAIN,这使我相信我在某个地方泄漏资源。

在POSIX中,是否有可能从流程本身中获得以下信息:

活动管道的活动pthreads

  • number的
  • 数,活动管道的

  • ,活动套接字的数量(或者这个和管道可以算作文件描述符?)

还是必须手工计算?已经有柜台了,但我想其中一个漏水了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-10 17:26:17

我猜你得到EAGAIN是因为你达到了资源限制。系统限制了可以运行的线程/进程的数量。你可以用

代码语言:javascript
复制
cat /proc/sys/kernel/threads-max

然后用

代码语言:javascript
复制
echo 100000 > /proc/sys/kernel/threads-max

分别使用。更有可能的是,您正遇到用户对进程的限制。您应该阅读手册页,并在getrlimitulimit上进行搜索。这里有很多关于这些的信息。

假设您是从一个父程序中生成所有这些进程,那么跟踪它们应该很容易。在fork()之前增加父级中的计数器。如果孩子们正在孕育孩子,那么它会变得更加复杂,您将需要使用共享内存或其他一些IPC机制。在任何情况下,您都可以使用wait()waitpid()系统调用确定子进程的状态,并在此基础上减少进程计数器。wait返回的状态数据将告诉您每个子节点的终止处理。再一次,有相当多的问题在上面,所以如果你遇到麻烦的话,就会涉及到相当多的细节。

在回答您的主要问题时,有一些方法可以查询系统(通常是通过/proc)来查询您所关注的一些资源。如果你关心自己的资源,这几乎总是错误的做法。这是在你的能力范围内,随时跟踪他们自己-和更有效率。

祝好运。希望这能把你引向正确的方向。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10069811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档