操作信号量报错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会引起问题。
[解决办法]