17. 执行程序出现 No child processes

原因是,再CentOS上,默认的用户空间最大线程数量是4096,当启动超过最大线程之后,会报错。 每种软件报的错可能不一样。

make: vfork: Resource temporarily unavailable
AS      libavfilter/aarch64/vf_nlmeans_neon.o
/bin/sh: fork: retry: No child processes
/bin/sh: fork: retry: No child processes
make: vfork: Resource temporarily unavailable
CC      libavfilter/aeval.o
/bin/sh: fork: retry: No child processes
AR      libavdevice/libavdevice.a

解决办法:

[me@centos ffmpeg]$ ulimit -a

max user processes              (-u) 4096

使用ulimit -u 设置最大进程数量

max user processes              (-u) 65535

修改后不再报错。

注意ulimit -u仅对当前窗口有效,需要永久改变的,需要写到文件当中

[me@centos ffmpeg]$ cat /etc/security/limits.d/20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     65535
root       soft    nproc     unlimited
[me@centos ffmpeg]$