深入探索 System V 信号量:从基础到应用
1. 引言
System V 信号量具有内核持久性,这意味着其值能在不同程序间由内核维护。为了更好地展示其使用方法,接下来将介绍几个简单程序,用于创建、操作和删除信号量集。
2. 简单程序介绍
2.1 创建信号量集程序(semcreate)
该程序用于创建一个 System V 信号量集。命令行选项-e可指定IPC - EXCL标志,最后一个命令行参数需指定信号量集中信号量的数量。
// svsern/serncreate.c #include "unpipc.h" int main(int argc, char **argv) { int c, oflag, semid, nsems; oflag = SVSEM_MODE | IPC_CREAT; while ((c = Getopt(argc, argv, "e")) != -1) { switch (c) { case 'e': oflag |= IPC_EXCL; break; } } if (optind != argc - 2) err_quit("usage: semcreate [ -e ] <pathname> <nsems>"); nsems = atoi(argv[optind + 1])