日期:2014-05-16  浏览次数:21102 次

操作信号量报错errno=28
系统 unix/sco

lock={0, -1, SEM_UNDO}
semop(nSemId[cId], & lock, 1)

程序应该是已经运行了五、六年相对稳定的程序,但移到另一个环境时突然报错。错误代号为28

strerror(28): No space left on device!


重启系统后多数情况下可以正常使用,当使用一段时间后,又会出现这个错误!

------解决方案--------------------
要么是磁盘空间满了,要么是i-node满了。删一些吧或者转移到别的磁盘。
df -i或df -h看一下。
------解决方案--------------------
ENOSPC
The limit on the number of individual processes requesting a SEM_UNDO flag would be exceeded.

是不是两个环境的内核参数有差异?
------解决方案--------------------
错误原因可能与SEM_UNDO有关。
程序的P操作和V操作不在同一个进程中的话,用SEM_UNDO会引起问题。

------解决方案--------------------
探讨

SEM_UNDO 应该不是这个的问题。

这个程序已经运行好多看了,最新安装到其它服务器上才出现的!