| Previous | Next |
| EINVAL | EMFILE |
ENFILE
How it differs from EMFILE
ENFILE means the system-wide open-file table or a related global file-object limit is exhausted. It differs from EMFILE, which is normally a per-process descriptor limit. An application that receives ENFILE may not be the process consuming most of the entries; the host as a whole is under pressure.
Servers can reach this state through descriptor leaks, a large number of simultaneous clients, runaway worker creation, message queues, or a separate workload on the same host. Because new opens, accepts, pipes, and other object-creating calls may all fail, the incident can spread beyond the application that caused it.
How to investigate and recover
- Separate host-wide file-object exhaustion from the current process’s
RLIMIT_NOFILElimit. - Inspect system-wide open-file usage and the largest descriptor consumers before raising limits.
- Look for leaked sockets, files, pipes, and queue descriptors, including descriptors inherited across process launches.
- Use admission control and graceful overload handling so that a temporary global limit does not cause an uncontrolled retry storm.
References
Looking for a different code? Search another status or error code.