posix信号灯里面的这个函数sem_open();这里面的第一个参数一般情况下第一个字符为'/' 而且后面的的字符串里面不能在中间出现反斜杠,因为这种有名信号灯的实现机制是依靠文件的方式来实现的.而反斜杠后面的为这个自定义文件的名字(也算是信号量的名字) 而命名机制是不允许出现反斜杠的. (但是可以是这样,开头处连续出现多个反斜杠比如'/semfxp',这是因为sem_open这个函数会检查第一个字符如果第一个字符为反斜杠则继续检查知道不出现反斜杠位置后面的即为名字,而如果第一个不为反斜杠,则它将默认为是信号量的名字了就直接创建这个文件了,也就不会出现问题,但是害怕的是有的人会有这种写法,'zhang/fxp', 假如说你写一个这样的名字,那麽系统会这样做,它会去在目录/dev/shm/下去找sem.zhang这个目录,结果会发现失败(之所以是sem.zhang是因为在sem_open这个源函数里面一般都添加一个sem.头部.) 当然了 你也可以在程序里面首先mkdir一个这样的文件夹比如sem.zhang (在/dev/shm/下) 这样的话程序就不会出现问题了.
sem_open出现段错误 名字问题
最新推荐文章于 2023-02-08 15:20:43 发布