当前位置: 技术问答>linux和unix
一个编写信号量时发现的问题
来源: 互联网 发布时间:2015-07-27
本文导语: 我用的是Mandrake Linux 我发现在他的/usr/include/sys/sem.h中 struct semid_ds { struct ipc_perm sem_perm; /* operation permission struct */ __time_t sem_otime; /* last semop() time */ unsigned long int __unused1; __time_t sem_ctime; /* l...
我用的是Mandrake Linux
我发现在他的/usr/include/sys/sem.h中
struct semid_ds
{
struct ipc_perm sem_perm; /* operation permission struct */
__time_t sem_otime; /* last semop() time */
unsigned long int __unused1;
__time_t sem_ctime; /* last time changed by semctl() */
unsigned long int __unused2;
unsigned long int sem_nsems; /* number of semaphores in set */
unsigned long int __unused3;
unsigned long int __unused4;
};
而不是书上写的
struct semid_ds
{
struct ipc_perm sem_perm;
struct sem *sem_base;
ushort sem_nsems;
time_t sem_otime;
time_t sem_ctime;
}
也就是说,里面没有sem_base,那要这么使用信号量啊,我都不能用semctl了
另外,我在网上找解决办法的时候,发现在/usr/include/linux/sem.h中有完整的结构定义
而且在网上的代码中也只包含了一个linux/sem.h文件,而没有包含很多,但我用这个文件来做头文件的时候,却发现一直会出重复定义的问题
大家谁有过类似的经历的吗?
帮帮我吧
我发现在他的/usr/include/sys/sem.h中
struct semid_ds
{
struct ipc_perm sem_perm; /* operation permission struct */
__time_t sem_otime; /* last semop() time */
unsigned long int __unused1;
__time_t sem_ctime; /* last time changed by semctl() */
unsigned long int __unused2;
unsigned long int sem_nsems; /* number of semaphores in set */
unsigned long int __unused3;
unsigned long int __unused4;
};
而不是书上写的
struct semid_ds
{
struct ipc_perm sem_perm;
struct sem *sem_base;
ushort sem_nsems;
time_t sem_otime;
time_t sem_ctime;
}
也就是说,里面没有sem_base,那要这么使用信号量啊,我都不能用semctl了
另外,我在网上找解决办法的时候,发现在/usr/include/linux/sem.h中有完整的结构定义
而且在网上的代码中也只包含了一个linux/sem.h文件,而没有包含很多,但我用这个文件来做头文件的时候,却发现一直会出重复定义的问题
大家谁有过类似的经历的吗?
帮帮我吧
|
你需要怎么用semaphore ? 我发现一些书上关于信号量写得不大正确
|
实在不行用posix信号量吧,不用system V的
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。