当前位置: 技术问答>linux和unix
操作信号量报错errno=28
来源: 互联网 发布时间:2017-02-04
本文导语: 系统 unix/sco lock={0, -1, SEM_UNDO} semop(nSemId[cId], & lock, 1) 程序应该是已经运行了五、六年相对稳定的程序,但移到另一个环境时突然报错。错误代号为28 strerror(28): No space left on device! 重启系统后多数情况下可...
系统 unix/sco
lock={0, -1, SEM_UNDO}
semop(nSemId[cId], & lock, 1)
程序应该是已经运行了五、六年相对稳定的程序,但移到另一个环境时突然报错。错误代号为28
strerror(28): No space left on device!
重启系统后多数情况下可以正常使用,当使用一段时间后,又会出现这个错误!
lock={0, -1, SEM_UNDO}
semop(nSemId[cId], & lock, 1)
程序应该是已经运行了五、六年相对稳定的程序,但移到另一个环境时突然报错。错误代号为28
strerror(28): No space left on device!
重启系统后多数情况下可以正常使用,当使用一段时间后,又会出现这个错误!
|
要么是磁盘空间满了,要么是i-node满了。删一些吧或者转移到别的磁盘。
df -i或df -h看一下。
df -i或df -h看一下。
|
ENOSPC
The limit on the number of individual processes requesting a SEM_UNDO flag would be exceeded.
是不是两个环境的内核参数有差异?
The limit on the number of individual processes requesting a SEM_UNDO flag would be exceeded.
是不是两个环境的内核参数有差异?
|
错误原因可能与SEM_UNDO有关。
程序的P操作和V操作不在同一个进程中的话,用SEM_UNDO会引起问题。
程序的P操作和V操作不在同一个进程中的话,用SEM_UNDO会引起问题。
|
我自遇到过,一个reader/writer函数,里面用了SEM_UNDO, 很多年没有问题,最近移植到另一个环境,发现SEM_UNDO引起的问题。
我的意思是,很多年没有出问题,并不表示没有问题,如果楼主没有找到其他原因,可以考虑一下是不是SEM_UNDO引起的。