真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

LINUX系統(tǒng)編程之IPC

LINUX系統(tǒng)編程之IPC(Inter Processes Communication)

創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷,包括成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營(yíng)銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營(yíng)銷等。創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)十載專注互聯(lián)網(wǎng)開(kāi)發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹(shù)立了良好口碑。

一、信號(hào)

1.信號(hào)的產(chǎn)生

軟件中斷,異步通信,ctrl+c,kill函數(shù),kill命令,硬件異常(段錯(cuò)誤),軟件異常

2.進(jìn)程收到信號(hào)后可以用如下方法處理:

執(zhí)行系統(tǒng)默認(rèn)動(dòng)作(終止),忽略此信號(hào),執(zhí)行自定義信號(hào)處理函數(shù)。

3.信號(hào)操作函數(shù)

kill(), alarm(), raise(), abort(), pause()

typedef void (*sighandler_t)(int);signal()

sigemptyset(), sigfillset(), sigismember(), sigdelset(), sigaddset()....

信號(hào)阻塞集:阻塞信號(hào)的接收sigprocmask();

二、管道/命名管道

1.無(wú)名管道:類似于一個(gè)文件,有2個(gè)文件描述符,只存在于內(nèi)存

半雙工,數(shù)據(jù)從寫端入,讀端出,先入先出,fd[0]輸出,fd[1]寫入

數(shù)據(jù)無(wú)格式要求,只固定大小,沒(méi)有名字,用fork和vfork會(huì)繼承其描述符

只有公共祖先進(jìn)程使用,如父進(jìn)程創(chuàng)建的管道只有該父進(jìn)程和其子進(jìn)程能訪問(wèn)

int fd[2]; 

pipe(fd);

write();read();

close(fd);

read從管道中讀取數(shù)據(jù)時(shí)會(huì)阻塞,有數(shù)據(jù)就讀到返回,沒(méi)數(shù)據(jù)則等待,

write從管道寫數(shù)據(jù),寫滿阻塞,直到數(shù)據(jù)被讀出

如果讀進(jìn)程退出了,寫進(jìn)程寫數(shù)據(jù)時(shí)也會(huì)退出可用fcntl()設(shè)置阻塞特性

dup(old)復(fù)制old文件描述符并分配一個(gè)新的描述符,讀寫位置也會(huì)復(fù)制

dup2(old, new)復(fù)制文件描述符old,分配新的文件描述符new, new也標(biāo)識(shí)old所標(biāo)識(shí)的文件

常用如重定向0,1,2描述符

int fd_stdout=dup(1);復(fù)制stdout描述符1

dup2(fd_stdout, 1);將描述符1重新分配給stdout

2.命名管道FIFO

有名字,存在于文件系統(tǒng),內(nèi)容只存在于內(nèi)存

不相關(guān)的進(jìn)程也能使用

命名管道復(fù)制后會(huì)變成普通文件

mkfifo("./cmd_fifo", 0777);

open("./cmd_fifo", O_RDWR);

write();read();

close();

3.消息隊(duì)列

由內(nèi)核維護(hù)的鏈表,消息有格式(結(jié)構(gòu)體),消息有類型,可按照類型隨機(jī)查詢

有標(biāo)識(shí)符,只有內(nèi)核重啟或人工刪除才能刪除

結(jié)構(gòu)體第一個(gè)成員代表消息類型必須是long型變量,其它自行定義

發(fā)送消息msgsent(msqid, &msg, sizeof(msg)-4, 0);

接收消息msgrcv(msqid, &msg, sizeof(msg)-4, type, 0);返回長(zhǎng)度

控制msgctl(msgqid, IPC_RMID, NULL)

typedef struct _msg

{

long mtype;

char mtext[50];

}MSG;

MSG msg;

key=ftok(".", 2012)

msgqid = msgget(key, IPC_CREAT|0666);

if(msgqid==-1)

perror("msgget");

msgrcv(msgqid, &msg, sizeof(msg.mtext), 10, 0);

msgctl(msgqid, IPC_RMID, NULL);

查看消息隊(duì)列ipcs -q

刪除消息隊(duì)列ipcrm -q msgqid

4.共享內(nèi)存

多個(gè)進(jìn)程共享給定的存儲(chǔ)空間

最快的通信方式,訪問(wèn)互斥

查看ipcs -m

刪除ipcrm -m shmid

創(chuàng)建或打開(kāi)int shmid = shmget(key, size, flag);

內(nèi)存映射shmat()

解除映射shmdt()

控制shmctl()


分享標(biāo)題:LINUX系統(tǒng)編程之IPC
標(biāo)題URL:http://weahome.cn/article/jsecoh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部