The same reason we have hard and soft limits on everything else. The hard limit is to protect users against each other. If one user could use resources without limit, that would diminish system performance/response for all the other users. The soft limit is to protect users against themselves, and the open file count is the perfect example of that. You might need to have 300 files open at once, and if your hard limit is 300 or higher, then you can do that. (If your soft limit is below 300, then you will need to increase it –– which you can do, up to your hard limit.) But very few programs need to have 300 files open at once. If your program does that, it probably has a bug where it opens files and fails to close them, even if it’s done using them. In this case, it’s probably better for you to find out about it when the program tries to open its 101st file; it will save you time, and maybe let you discover the error in your program before somebody else does.