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

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

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

创建/打开消息队列(

创建的消息队列的数量会受到系统消息队列数量的限制

)

int msgget(

key_t key,     //

和消息队列关联的key值

int flag    //消息队列的访问权限

);

返回值:

成功:消息队列的ID

出错:-1

添加消息(

按照类型把消息添加到已打开的消息队列末尾

int msgsnd(

int msqid,  //消息队列的ID

const void *msgp,  //指向消息结构msgbuf.

size_t size,  //

发送的消息正文的字节数(LEN)

int flag //IPC_NOWAIT:消息没有发送完成函数也会立即返回;0:直到发送完成函数才返回。

);

返回值:

成功:0

出错:-1

读取消息(

按照类型把消息从消息队列中取走

int msgrcv(

int msgid,  //消息队列的ID

void* msgp,  //接收消息的缓冲区

size_t  size,  //要接收的消息的字节数

long msgtype,

int  flag

);

参数:

msgtype:

0:队列中最早的消息

>0:指定接收类型

<0:按优先级接收 接收消息队列中类型值不小于msgtyp的绝对值且类型值又最小的消息。

flag:

0:若无消息函数会一直阻塞

IPC_NOWAIT:若没有消息,进程会立即返回ENOMSG。

返回值:

成功:读取的消息的长度

出错:-1

控制消息队列(

可以完成多项功能

)

int msgctl (

int msgqid, //消息队列的队列ID

int cmd,

struct msqid_ds *buf

);

参数:

cmd:

IPC_STAT:读取消息队列的属性,并将其保存在buf指向的缓冲区中。

IPC_SET:设置消息队列的属性。这个值取自buf参数。

IPC_RMID:从系统中删除消息队列。

buf:消息队列缓冲区

返回值:

成功:0

出错:-1

信号灯(semaphore)

信号灯也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制。

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

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

推荐文章
    热点阅读