国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

無錫兼職做網(wǎng)站電商培訓(xùn)內(nèi)容

無錫兼職做網(wǎng)站,電商培訓(xùn)內(nèi)容,外貿(mào)免費平臺,做網(wǎng)站軟件圖標(biāo)是一個箭頭的目錄 一、匿名管道 1.什么是管道?什么是匿名管道? 2.怎么創(chuàng)建匿名管道(函數(shù)) 3.匿名管道的4種情況 4.匿名管道有5種特性 5.怎么使用匿名管道?匿名管道有什么用?(例子) 二、命名…

目錄

一、匿名管道

1.什么是管道?什么是匿名管道?

2.怎么創(chuàng)建匿名管道(函數(shù))

3.匿名管道的4種情況

4.匿名管道有5種特性

?5.怎么使用匿名管道?匿名管道有什么用?(例子)

二、命名管道

1.什么是命名管道?

2.怎么創(chuàng)建命名管道(函數(shù))?

3.命名管道的打開規(guī)則

4.怎么使用命名管道?命名管道有什么用?(例子)

三、匿名管道和命名管道的區(qū)別?


一、匿名管道

1.什么是管道?什么是匿名管道?

我們把從一個進程連接到另一個進程的一個數(shù)據(jù)流稱為一個“管道”。而匿名管道顧名思義,就是一種沒有名字的“管道”。

2.怎么創(chuàng)建匿名管道(函數(shù))

#include <unistd.h>
功能:創(chuàng)建一無名管道
原型
int pipe(int fd[2]);
參數(shù)
fd:文件描述符數(shù)組,其中fd[0]表示讀端, fd[1]表示寫端

記憶方法:0像一張嘴,所以是讀端,1像一支筆,所以是寫端
返回值:成功返回0,失敗返回錯誤代碼

3.匿名管道的4種情況

1.正常情況,如果管道沒有數(shù)據(jù)了,讀端必須等待,直到有數(shù)據(jù)為止(寫端寫入數(shù)據(jù)了)
2.正常情況,如果管道被寫滿了,寫端必須等待,直到有空間為正(讀端讀走數(shù)據(jù))
3.寫端關(guān)閉,讀端一直讀取,讀端會讀到read返回值為0,表示讀到文件結(jié)尾
4.讀端關(guān)閉,寫端一直寫入,OS會直接殺掉寫端進程,通過向目標(biāo)進程發(fā)送SIGPIPE(13)信號,終止目標(biāo)進程
b.管道的5種特性
1.匿名管道,可以允許具有血緣關(guān)系的進程之間進行進程間通信,常用與父子,僅限于此
2.匿名管道,默認給讀寫端要提供同步機制 ---了解現(xiàn)象就行
3. 面向字節(jié)流的---了解現(xiàn)象就行
4.管道的生命周期是隨進程的
5.管道是單向通信的,半雙工通信的一種特殊情況

4.匿名管道有5種特性

1.匿名管道,可以允許具有血緣關(guān)系的進程之間進行進程間通信,常用與父子,僅限于此
2.匿名管道,默認給讀寫端要提供同步機制
3. 面向字節(jié)流的
4.管道的生命周期是隨進程的
5.管道是單向通信的,半雙工通信的一種特殊情況

?5.怎么使用匿名管道?匿名管道有什么用?(例子)

例子:

先創(chuàng)建管道, 進而創(chuàng)建子進程, 父子進程使用管道進行通信

父進程向管道當(dāng)中寫“i am father”,?

子進程從管道當(dāng)中讀出內(nèi)容, 并且打印到標(biāo)準輸出(屏幕)

#include <unistd.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{int fd[2];//打開匿名管道if(pipe(fd) == -1){cout << "open pipe fail" << endl;exit(1);}pid_t id = fork();if(id == 0)//child{char message[30];read(fd[0], message, sizeof(message));cout << message << endl;}//fatherchar s[] = "i am father";write(fd[1], s, sizeof(s));return 0;
}

運行后:

二、命名管道

1.什么是命名管道?

匿名管道應(yīng)用的一個限制就是只能在具有共同祖先(具有親緣關(guān)系)的進程間通信

如果我們想在不相關(guān)的進程之間交換數(shù)據(jù),可以使用FIFO文件來做這項工作,它經(jīng)常被稱為命名管道。命名管道是一種特殊類型的文件。

2.怎么創(chuàng)建命名管道(函數(shù))?

命名管道可以從命令行上創(chuàng)建,命令行方法是使用下面這個命令

mkfifo filename

命名管道也可以從程序里創(chuàng)建,相關(guān)函數(shù)有?

#include <sys/types.h>

#include <sys/stat.h>

int mkfifo(const char *filename,mode_t mode);

filename:命名管道的名字

mode:權(quán)限值

返回值:成功返回0,失敗返回-1

3.命名管道的打開規(guī)則

如果當(dāng)前打開操作是為讀而打開FIFO時

  • O_NONBLOCK (disable):阻塞直到有相應(yīng)進程為寫而打開該FIFO
  • O_NONBLOCK (enable):立刻返回成功

如果當(dāng)前打開操作是為寫而打開FIFO時

  • O_NONBLOCK (disable):阻塞直到有相應(yīng)進程為讀而打開該FIFO
  • O_NONBLOCK (enable):立刻返回失敗,錯誤碼為ENXIO


4.怎么使用命名管道?命名管道有什么用?(例子)

創(chuàng)建出來的命名管道可以供兩個進程通信

進程A 向管道當(dāng)中寫 “i am process A”

進程B 從管道當(dāng)中讀 并且打印到標(biāo)準輸出

processA.cc

#include "fifo.h"
using namespace std;
bool MakeFifo()
{int n = mkfifo(FIFONAME, 0644);if(n < 0){cout << "mkfifo fail" << endl;return false;}return true;
}int main()
{//創(chuàng)建命名管道if(!MakeFifo()){cerr << "mkfifo fail" << endl;return 1;}//打開fifo文件寫int wfd = open(FIFONAME, O_WRONLY);if(wfd < 0){cerr << "open fifo fail" << endl;return 2;}cout << "Process A is sending a message to process B" << endl;char message[] = "i am process A";write(wfd, message, sizeof(message));return 0;
}

processB.cc

#include "fifo.h"
using namespace std;int main()
{//打開fifo文件寫int rfd = open(FIFONAME, O_RDONLY);if(rfd < 0){cerr << "open fifo fail" << endl;return 2;}cout << "receives messages from process A: ";char message[30];read(rfd, message, sizeof(message));cout << message << endl;return 0;
}

fifo.h

#include <sys/types.h>
#include <sys/stat.h>
#include <iostream>
#include <cassert>
#include <fcntl.h>
#include <unistd.h>#define FIFONAME  "fifo"

現(xiàn)象:

1.

?2.

?3.

三、匿名管道和命名管道的區(qū)別?

  • 匿名管道由pipe函數(shù)創(chuàng)建并打開。
  • 命名管道由mkfifo函數(shù)創(chuàng)建,打開用open
  • FIFO(命名管道)與pipe(匿名管道)之間唯一的區(qū)別在它們創(chuàng)建與打開的方式不同,一但這些工作完成之后,它們具有相同的語義
http://aloenet.com.cn/news/30960.html

相關(guān)文章:

  • 徐州提供網(wǎng)站建設(shè)報價表寧波seo網(wǎng)絡(luò)推廣優(yōu)化價格
  • 動態(tài)網(wǎng)站開發(fā)平臺簡介什么叫seo
  • 購物網(wǎng)站策劃案廈門谷歌seo公司
  • 北京網(wǎng)站建設(shè)的價格中國最好的營銷策劃公司
  • 做班級的活動的網(wǎng)站企業(yè)營銷策劃方案范文
  • 招聘H5在什么網(wǎng)站做最好搜索引擎排名
  • 用手機什么軟件做網(wǎng)站百度推廣怎么操作流程
  • 帶登錄網(wǎng)站模板網(wǎng)站建設(shè)的整體流程有哪些
  • 阿里云Windows網(wǎng)站建設(shè)廣東百度推廣的代理商
  • 自助建站系統(tǒng)免授權(quán)版企業(yè)查詢網(wǎng)
  • 網(wǎng)站開發(fā)專業(yè)就業(yè)培訓(xùn)學(xué)校石家莊網(wǎng)絡(luò)營銷網(wǎng)站推廣
  • 怎么免費做個人網(wǎng)站互聯(lián)網(wǎng)營銷策略有哪些
  • 網(wǎng)站怎么做?企業(yè)培訓(xùn)的目的和意義
  • 一鍵清理加速北京網(wǎng)站優(yōu)化推廣方案
  • 做網(wǎng)站代理拉不到人常州網(wǎng)站推廣公司
  • 動態(tài)網(wǎng)站設(shè)計主題長春seo培訓(xùn)
  • 金融跟單公司網(wǎng)站建設(shè)seo課程培訓(xùn)中心
  • 網(wǎng)站推廣怎么做2017注冊域名查詢網(wǎng)站官網(wǎng)
  • 做直播的在相親網(wǎng)站交友韓國搜索引擎排名
  • 做棋牌網(wǎng)站抓到會怎么量刑廈門seo新站策劃
  • 網(wǎng)站添加鏈接網(wǎng)站申請流程
  • 櫻花代碼htmlseo外包如何
  • 大同網(wǎng)站建設(shè)熊掌號制作網(wǎng)站的公司有哪些
  • 房地產(chǎn)平面設(shè)計主要做什么貴州二級站seo整站優(yōu)化排名
  • 太原制作網(wǎng)站代理公司注冊
  • 建筑公司網(wǎng)站md0095設(shè)計風(fēng)格荊門網(wǎng)絡(luò)推廣
  • 江西省贛州市地圖全圖寧波seo外包服務(wù)
  • 化妝品網(wǎng)站建設(shè)報告網(wǎng)店運營公司
  • 站長統(tǒng)計導(dǎo)航窗口如何搭建網(wǎng)站平臺
  • 七星網(wǎng)絡(luò)網(wǎng)站軟文范例大全500