我有一个创建大量套接字(大约700个套接字)的PERL脚本,然后用这些套接字做东西。之后,它使用system(...)
命令启动另一个应用程序,该应用程序可以打开更多的套接字(例如800左右),但由于每个进程的套接字数量限制为1024
,因此我超出了限制,并且没有从中获得预期数据插座号码1024及以上。在子进程中不需要的打开套接字
现在我的问题是这样的:
- 系统是否命令make推出继承所有打开的文件描述符/套接字的应用程序?
- 如果上述问题的答案是肯定的,那么还有其他一些方法来启动另一个应用程序,以使启动的应用程序不会继承文件描述符吗?
- 如果2.的答案为否,那么是否有某种方法可以关闭子进程中的所有继承的文件描述符?
假设这是一个类UNIX系统,每用户fd限制是多少? – pilcrow
每个用户是否有限制?我不知道... 每个进程的限制设置为1024(所以0到1023工作正常,并且1024失败)... – mtahmed
我的意思是用户的进程可能有一个资源限制低于系统。你可以在system()之前打印'$^F'吗?你可以试试'system('ulimit -n; exec your_command ...')'来查看当前的限制吗? – pilcrow