日期:2014-05-16  浏览次数:20551 次

如何获取正在运行的进程可以打开的最大文件描述符?
如题,如何能够获取一个正在运行进程的最大文件描述符个数啊?
说如何获取当前用户可以打开的文件描述符个数$ulimit -n,这个我知道。
但是每个进程是可以单独设置自己的最大文件描述符个数的,请问如何获取?
谢谢。
------解决方案--------------------

/**
 * @file    rlimit.c
 * @brief   
 */

#include <stdio.h>

#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>

int main(int argc, char *argv[])
{
    struct rlimit rlim;

    getrlimit(RLIMIT_NOFILE, &rlim);
    printf("rmim_cur=%d rlim_max=%d\n", (int)rlim.rlim_cur, (int)rlim.rlim_max);

    return 0;
}

------解决方案--------------------
你这个是什么需求呀?
可以深入内核获取,写个KLM内核模块(insmod加载)检查指定进程的struct tast_struct中的某个字段,然后用netlink将得到的结果传给上层的应用。   因为你这个是获取别的进程的此时的软限制,好像没啥命令能查看别人的吧。查看自己进程的软限制到是可以用getrlimit.....   只能深入内核了。
看楼下知不知道有什么命令可以获得某个进程的软限制。