- 进程间通信IPC的目的:数据传送、进程同步或互斥
信号量
c
#include <sys/ipc.h>
#include <sys/sem.h>
int main()
{
//申请信号量
semget();
semctl();
}
POSIX IPC
信号量
无名信号量
- 可用于线程间通信
c
#include <semaphore.h>
int main()
{
sem_t sem_id;
sem_init(&sem_id, 0, 1); //初始化信号量
sem_wait(&sem_id); //P操作, will block
//sem_trywait(&sem_id); //try to P操作, won't block
//访问临界资源
sem_post(&sem_id); //V操作
sem_destroy(&sem_id); //销毁信号量
}
有名信号量
c
char* SEM_NAME = "sem1";
//初始化信号量
sem_t* mutex = sem_open(SEM_NAME, O_CREAT, 0644, 1);
sem_wait(mutex);
//访问临界资源
sem_post(mutex);
sem_close(mutex);
sem_unlink(SEM_NAME);