有点东西没有想通(关于信号量)
以下程序是一个建立共享内存,和产生信号量的程序段,请问信号量是多少呢?如果我要建立信号量为3怎么做呢?
int *readcount;
int semset_id;
void opensem(int * sid,key_t key)
{
if((*sid=semget(key,0,0666))==-1)//从这里看好像信号量应该是零吧?key在这里有什么用呢?0666又是什么呢?
{ printf("semaphore set does not exist\n");
exit(1);
};
}
int * openshm(int n,int size)
{
key_t key;
int shmid,cntr;
char *segptr;
key=ftok(".",'s')+n;
if((shmid=shmget(key,size,0))==-1)
{ perror("shmget");
exit(1);
}
if((segptr=shmat(shmid,0,0))==-1)
{ perror("shmat");
exit(1);
}
return((int*) segptr);
}
key=ftok(".",'s');//请解释一下这个函数,key是什么?有什么用,看帮助看了半天还是没有看懂
opensem(&semset_id,key);
readcount=(int*)openshm(1,100);
完整的程序的运行结果是:“semaphore set does not exist”为什么会失败呢?
最近要考试了,今天看了看书问题多多啊~~,请大家帮帮忙吧,鞠躬!