MST

星途 面试题库

面试题:C语言中Linux信号量初始化的基本步骤

在Linux环境下使用C语言,简述信号量初始化的基本步骤,需要提及相关头文件及关键函数。
29.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 头文件
    • 需要包含<semaphore.h>头文件,它提供了信号量相关的函数和类型定义。
  2. 基本步骤
    • 定义信号量变量: 定义一个sem_t类型的变量,例如:sem_t sem;
    • 初始化信号量: 使用sem_init函数进行初始化。函数原型为int sem_init(sem_t *sem, int pshared, unsigned int value);
      • sem:指向要初始化的信号量对象的指针,即前面定义的sem变量。
      • pshared:若其值为0,表示信号量是进程内共享,只能用于当前进程的线程间同步;若为非0值,表示信号量可以在多个进程间共享。
      • value:信号量的初始值,例如设置为1表示二值信号量,设置为大于1的值可用于控制资源数量的计数信号量。 示例代码:sem_init(&sem, 0, 1); // 初始化一个进程内共享且初始值为1的信号量。

在程序结束时,若信号量不再使用,可使用sem_destroy函数销毁信号量,函数原型为int sem_destroy(sem_t *sem);,例如sem_destroy(&sem); 。这一步确保释放与信号量相关的系统资源。