进程通信(信号量)出现‘Invalid argument‘问题?
先上代码:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
int semid;
struct sembuf sem_down = {0,-1,0};
struct sembuf sem_up = {0,1,0};
void down()
{
semop(semid,&sem_down,1);
}
void up()
{
semop(semid,&sem_up,1);
}
int main()
{
semid = semget(2345, 1, IPC_CREAT|0666);
if(semid == -1)
perror("semget error:") ;
//2,set semaphore = 1
if(semctl(semid,1,SETVAL) == -1)
perror("semctl error:") ;
//3,lock unlock
down() ;
printf("Hello world\n") ;
sleep(10) ;
up() ; // unlock
return 0 ;
}
程序编译通过,但是运行打印:
semctl error ::invalid argument