처음에는 내 프로그램에서 많은 파일 설명자를 만들었고 시스템 파일 설명자의 수가 증가하는 것을 보았습니다.
# bash(1) before:
cat /proc/sys/fs/file-nr
1024 0 97861
# bash (2): create a lot of fds
>>> a = []
>>> while True:
... a.append(open('asdf', 'a'))
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IOError: [Errno 24] Too many open files: 'asdf'
>>>
예상대로 파일 설명자 수가 증가했습니다.
# back to bash (1) output
cat /proc/sys/fs/file-nr
2048 0 97861
이제 Python에서 fork()하면 커널이 모든 fd를 자식에도 복사할 것으로 예상됩니다. 하지만 이로 인해 file-nr
?
# bash (2): more commands at python- fork a child
>>> import os
>>> import time
>>> if os.fork() == 0:
... time.sleep(1000)
... else:
... time.sleep(1000)
...