🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
核心转储
ulimit指令
ulimit 命令用于查看和修改当前用户的资源限制。Linux 系统中的资源限制指的是系统或进程所允许的最大资源使用量,例如 CPU 时间、文件大小、进程数等。
使用 ulimit 命令可以查看当前用户的资源限制,命令格式如下:
ulimit [选项] [参数] 常用的选项包括: * -a:显示所有资源限制。 * -c:设置或显示进程核心转储文件的大小限制。 * -f:设置或显示可创建的文件的最大大小。 * -n:设置或显示单个进程可以打开的文件描述符数量限制。 * -u:设置或显示单个用户可以拥有的最大进程数量限制。 例如,要查看当前用户可以打开的最大文件描述符数量,可以使用以下命令: ulimit -n 要将进程的最大文件大小限制设置为100MB,可以使用以下命令: ulimit -f 100000
需要注意的是,ulimit 命令只能影响当前 shell 中的进程及其子进程,对于其他进程不会产生影响。如果需要在系统上全局修改资源限制,需要修改系统配置文件 /etc/security/limits.conf 和 /etc/sysctl.conf 等。
当一个程序出现了严重的错误(例如内存越界、除以零等),导致程序无法正常继续执行时,系统会将当前程序的内存映像保存到一个称为“核心转储文件(core dump)”的文件中,以便进行后续的调试和分析。
在 Linux 系统中,可以使用 ulimit 命令设置或显示进程核心转储文件的最大大小限制。通常情况下,系统会将核心转储文件保存在当前目录下,文件名以 core.[进程ID] 的形式命名。例如,如果进程ID是1234,则核心转储文件的文件名为 core.1234。
需要注意的是,核心转储文件可能会包含敏感数据,例如密码、私钥等,因此在进行调试时需要格外小心,确保不会泄露敏感信息。同时,在生产环境中应该关闭核心转储功能,以减少安全风险。
云服务器一般是关闭了核心转储
信号的保存
信号的处理的三种方式,我们可以使用signal(signum,handler)
1. 如果 handler 为 SIG_DFL,表示将信号的处理方式恢复为默认操作。
2. 如果 handler 为 SIG_IGN,表示忽略该信号。
3. 如果 handler 不是 SIG_DFL 或 SIG_IGN,则表示安装一个新的信号处理函数。进行自定义捕捉
忽略算不算处理了这个信号呢?已经处理该信号,结果就是忽略
信号从产生到递达之间的状态,称为信号未决(Pending)。
信号写入到位图时,叫做信号未决
进程可以选择阻塞 (Block )某个信号。
被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.
未决之后,暂时不进行递达,直