进程间通信(8)-IPC通信之信号灯

1、信号灯

信号灯集合(可以包含多个信号灯),IPC对象是一个信号灯集(多个信号量)。

信号灯

2、信号灯与信号量的对比

信号灯与信号量的对比

3、semget函数

int semget(key_t key, int nsems, int semflg);
semget函数

例子:

#include "sys/types.h"
#include "sys/sem.h"
#include "signal.h"
#include "unistd.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
    int semid;
    semid = semget(IPC_PRIVATE, 3, 0777);
    if(semid < 0)
    {
        printf("create semaphore failure\n");
        return -1;
    }
    printf("create semaphore success semid = %d\n", semid);
    system("ipcs -s");

    while(1);
    return 0;
}
成功创建

4、semctl函数

semctl函数

例子:

#include "sys/types.h"
#include "sys/sem.h"
#include "signal.h"
#include "unistd.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
    int semid;
    semid = semget(IPC_PRIVATE, 3, 0777);
    if(semid < 0)
    {
        printf("create semaphore failure\n");
        return -1;
    }
    printf("create semaphore success semid = %d\n", semid);
    system("ipcs -s");

    // delete semaphore
    semctl(semid, 0, IPC_RMID);
    system("ipcs -s");
    return 0;
}
成功删除

5、semop函数

semop函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容