Skip to content
果冻虾仁 edited this page Aug 22, 2017 · 2 revisions

共享内存的控制

函数原型

#include <sys/ipc.h>
#include <sys/shm.h>

int shmctl(int shmid, int cmd, struct shmid_ds *buf);

参数

shmid

由shmget函数生成,不同的key值对应不同的id值。

cmd

操作字段,包括:

  • 公共的IPC选项(ipc.h中):
    • IPC_RMID //删除
    • IPC_SET //设置ipc_perm参数
    • IPC_STAT //获取ipc_perm参数
    • IPC_INFO //如ipcs
  • 共享内存自己的选项(shm.h中)【需要root权限】
    • SHM_LOCK //锁定共享内存段
    • SHM_UNLOCK //解锁共享内存段

Linux环境编程API

C语言API包含部分标准C的API、POSIX标准的系统编程API(一些Linux独有的系统API会单独注明)。

头文件源码

大部分头文件源码在/usr/include目录下。

安装man手册

因为涉及到大量的POSIX编程。所以最好下载POSIX函数的man手册。

Ubuntu

apt-get install manpages-posix        
apt-get install manpages-posix-dev

默认安装了manpages-dev,所以不装POSIX的man手册是可以查看绝大部分API的。
但是不装的话,有些API是不能看到的,比如posix_spawn函数。

CentOS

yum install man-pages.noarch

关于目录

左侧的目录并非以函数为索引依据,主要是以系统的man手册页面为索引依据。
比如exec里面包含6个函数、pipe里面包含pipe()和pipe2()两个函数,但是它们都是属于一个man页面中。

Clone this wiki locally