加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

UNIX环境高级编程:进程管理和通信

发布时间:2016-09-27 18:52:05 所属栏目:Unix 来源:站长网
导读:副标题#e# 进程和程序的区别: 进程: 程序的一次执行过程 动态过程,进程的状态属性会发生变化 程序:存放在磁盘上的指令、数据的有序集合 是个文件,可直观看到 程序program 静态的概念,本身不会发生变化。指令谁来执行,数据谁来访问?cpu! 但前提是cpu

参数:

shmflg:标志位,

同open函数的权限位,也可以用8进制表示法。

用法:

0666 打开一个共享内存,不能创建。如果与key关联的不存在,会返回-1。

0666|IPC_CREAT 不存在就创建,存在就打开

有时需初始化,创建后要初始化0666|IPC_CREAT|IPC_EXCL 返回-1,并设置相应errno。 errno=EEXIST表示已存在。

例:

int shmid;

if( (shmid = shmget(key, 128, 0666|IPC_CREAT|IPC_EXCL)) < 0)

{ if(errno == EEXIST)

{ shmid = shmget(key, 128, 0666)} //已经存在的情况,打开就可以。

返回值

成功:共享内存段标识符

出错:-1

映射 共享内存

void *shmat(

int shmid, //

要映射的共享内存区标识符

const void *shmaddr, //

将共享内存映射到指定地址(若为NULL,则表示由系统自动完成映射)

int shmflg

);

参数:

shmflg:

SHM_RDONLY:共享内存只读

默认0:共享内存可读写

返回值

成功:映射后的地址;

出错:-1。

撤销共享内存映射

int shmdt(

const void *shmaddr //共享内存映射后的地址

);  

返回值:

成功:0,

失败:返回-1

删除共享内存对象

int shmctl(

int shmid,  //要操作的共享内存标识符

int cmd,

struct shmid_ds  *buf  // 指定IPC_STAT/IPC_SET时用以保存/设置属性

);

参数:

cmd :

IPC_STAT  (获取对象属性)

IPC_SET (设置对象属性)

IPC_RMID (删除对象)

返回值:

成功:0,

失败:返回-1

消息队列(Message queue)

消息队列的操作包括创建或打开消息队列、添加消息、读取消息和控制消息队列。

可看成是多个FIFO的集合,消息类型.

消息队列随内核持续,除内核重启或人工删除。

消息队列对应唯一的键值

消息结构体

struct msgbuf

{

long mtype;  //消息类型

char mtext[N]

//消息正文

};

#define LEN  (sizeof(MSG)- sizeof(long))

<sys/types.h>

<sys/ipc.h>

<sys/msg.h>

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读