ham*_*dog 3 process limit files
在 Mac 或 Linux 上,如果您使用该命令,ulimit -n
您可以根据此 stackoverflow 帖子看到似乎是单个进程的页面打开限制。
因此,如果父进程产生子进程并且这些子进程打开文件,那么这些文件是否计入父进程的打开文件限制?
RLIMIT_NOFILE 是您可以获得/分配的最大文件描述符值,而不是一次可以打开多少个文件。
子进程继承限制,但除此之外,子进程无法影响父进程。如果父级在 0->limit-1 范围内有一些空闲 fds,那么它仍然可以打开新文件(写入该限制),无论其任何子级做什么(尽管您可能会遇到其他全局限制) )。
在任何情况下,请注意,如果限制为 500,如果在降低限制之前打开了一些文件描述符(包括在父进程中),您仍然可以打开 500 个以上的文件描述符。
$ bash -c 'exec 1023> /dev/null; ulimit -n 500;
command exec 600> /dev/null; ls -l /proc/self/fd; exit'
bash: 600: Bad file descriptor
total 0
lrwx------ 1 chazelas chazelas 64 Jun 17 08:40 0 -> /dev/pts/1
lrwx------ 1 chazelas chazelas 64 Jun 17 08:40 1 -> /dev/pts/1
l-wx------ 1 chazelas chazelas 64 Jun 17 08:40 1023 -> /dev/null
lrwx------ 1 chazelas chazelas 64 Jun 17 08:40 2 -> /dev/pts/1
l-wx------ 1 chazelas chazelas 64 Jun 17 08:40 3 -> /dev/null
lr-x------ 1 chazelas chazelas 64 Jun 17 08:40 4 -> /proc/8034/fd
Run Code Online (Sandbox Code Playgroud)
该进程运行ls
的限制为 500,从其父级继承而来(因此无法获得大于 499的新fd)。它仍然打开了 fd 1023。
归档时间: |
|
查看次数: |
2002 次 |
最近记录: |