static unsigned int state = 1 ;
key_t h=ftok(".", state++);
int sem_id=semget(h, no_of_sems, IPC_CREAT|0666);
和
2。
int sem_id =semget(IPC_NEW,no_of_sems,0666|IPC_CREAT);
正如Linux手册http://man7.org/Linux/man-pages/man2/shmget.2.html中提到的那样
IPC_PRIVATE不是标志字段,而是key_t类型。如果将此特殊值用于key,则系统调用将忽略shmflg中除最低有效9位以外的所有位,并创建一个新的共享内存段。
Edit:
IPC_PRIVATE => IPC_NEW
首先,你应该观察BUG
The name choice IPC_PRIVATE was perhaps unfortunate, IPC_NEW would
more clearly show its function.
好的。我只是解释了我对shmget
的了解
请参见shmget
的说明
int shmget(key_t key, size_t size, int shmflg);
DESCRIPTION
shmget() returns the identifier of the System V shared memory segment
associated with the value of the argument key. A new shared memory
segment, with size equal to the value of size rounded up to a multiple
of PAGE_SIZE, is created if key has the value IPC_PRIVATE or key isn't
IPC_PRIVATE, no shared memory segment corresponding to key exists, and
IPC_CREAT is specified in shmflg.
/* resource get request flags */
#define IPC_CREAT 00001000 /* create if key is nonexistent */
#define IPC_EXCL 00002000 /* fail if key exists */
#define IPC_NOWAIT 00004000 /* return error on wait */
o The key argument is equal to IPC_PRIVATE.
o The key argument does not already have a shared memory
identifier associated with it, and (shmflg&IPC_CREAT)
is true.
问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有
我知道可以用Scala表示如下: 我明白为什么它是有用的。例如,给定两个函数: 我可以很容易地编写函数<code>getPhoneByUserId(userId:Int),因为<code>选项是一个单子: ... 现在我看到Scala中的< code >应用函子: 我想知道我什么时候应该使用它而不是monad。我想Option和List都是。您能否举一个简单的例子来使用与Option和List一起
问题内容: 抱歉,如果我有点模棱两可,但是我试图了解使用Node.js而不是其他服务器端语言的真正优势。 我是JavaScript爱好者,所以我可能会玩Node.js,但我想知道是否应该在项目中使用它。 问题答案: 在V8上发生了异步非阻塞I / O 构建。 因此,我们拥有了Google JavaScript解释器V8的所有性能提升。由于JavaScript性能竞赛尚未结束,您可以期望Google
问题内容: 通过它的外观- 似乎创建了一个对象的克隆。如果是这样的话,那么与实现Cloneable接口有关的担忧(只有不可变对象才是新对象,因为可变对象复制了引用)是最好的,为什么? 昨天我实现了cloneable,然后意识到我必须对非 String / Primative 元素提供自己的修改。然后,我被告知我正在使用哪个。两种实现似乎都提供了类似的功能。 谢谢 问题答案: Josh Bloch提
问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮助。但是,在发送流数据时,等待A
问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或