昨天系统出现了问题,现象是日志从进入守护进程模式后就再也不出了,检查了半天也没查出问题。
下午的代码走查会议,无意中找到了问题的原因。
原来一个模块新加的初始化函数被放到了日志模块的初始化函数之前,那个初始化函数对一个未初始化的句柄数组逐一执行了close操作。
数组中其中一个成员为0-3之间的数值,导致了日志模块初始化的时候,open日志文件时候得到的句柄为0-3之间的数字,然后进入守护进程的函数里在fork之后执行了对0-3的close,这导致了日志文件的句柄被关闭,从而使得后面就再也没有日志了。
改那个新模块的close操作为直接把句柄设置为-1,问题解决。