linux 为什么semop()函数调用不起作用?

rkttyhzu  于 2023-01-29  发布在  Linux
关注(0)|答案(2)|浏览(165)

semop函数调用在linux上不起作用。我在2个终端上运行这个程序,所以我试图做的是允许程序的一个示例从一个终端进入临界区,而另一个示例从终端2将在临界区之前等待,直到第一个出来,但semop不起作用,所以两者同时进入临界区,所以我在这里错过了什么,谁能解决这个问题呢?

#include<stdio.h>
#include<unistd.h>
#include<sys/sem.h>
#include<sys/types.h>
#include<sys/ipc.h>

int main(void)
{
int key,semid;
key=ftok(" ",'a');
struct sembuf buf={0,-1,0};
semid= semget(key,1,0);
printf("Before entering into the critical section\n");
printf("Waiting for unlock\n");
semop(semid, &buf,1);
printf("Enter the critical section\n");
printf("Enter to unlock\n");
getchar();
buf.sem_op=1;
semop(semid, &buf,1);
}```
deyfvvtc

deyfvvtc1#

我认为您需要在已经存在的getchar()下添加另一个getchar()。

9njqaruj

9njqaruj2#

尝试:

key = ftok("main.cpp", 1); // or "/tmp" or any other existing file/directory.

相关问题