QPross一般用于启动外部程序或者执行指定的脚本:
但是在实际的过程中,执行某些脚本可能执行不成功,
[Warning] QProcessPrivate::createPipe: Cannot create pipe 0xb8ba00: Too many open files
原因是QProcess是通过创建文件执行的,发现文件打开数量超过限制。
[遇到这种问题,需要排查程序,看是否对文件操作只打开没有关闭的操作等。
当时排查我们的代码因为每隔一段时间,程序会调文件操作,只有open没有close,导致在QProcess执行时文件打开数量达到操作系统上线,结果QProcess执行不成功,程序没过多长时间就崩溃了。
当时的错误信息为:QProcessPrivate::createPipe: Cannot create pipe 0x1f38ee0: Too many open files;
参考的文档:
https://blog.csdn.net/qq_18298439/article/details/83896777
https://blog.csdn.net/qq_18581221/article/details/80963741
https://blog.51cto.com/12824426/2060594
===================================================================
sudo cat /proc/PID/limits
lsof -p PID | wc -l
在linux服务器上可以使用
ulimit -a
查看当前系统设置的打开文件数字。
使用
lsof -p pid | wc -l
查看某程序打开了多少文件。