我最近遇到了有关msgget的此类问题。
while(1)
{
msqid = msgget(IPC_PRIVATE,IPC_CREAT);
if(msqid<0)
break;
printf("msqid=%d\n",msqid);
}
很快,它消耗了内核中的所有 msqid。
因为 msgget 是内核持久的,所以下一次,该进程立即运行并退出 ENOSPC。
虽然配置 sysconf 来解决问题。但如果恶意代码继续运行,我应该一次又一次地重新配置。
在我看来,这是一种严重的泄漏,并使其他进程缺少 msqid。
系统管理员如何避免这种情况?