哈爾濱海月數據恢復,技術亞洲領先 設為首頁加入收藏RSS訂閱
中國區:哈爾濱(總部)鄭州福建深圳沈陽合肥大連包頭淄博上海廣州
    南京杭州嘉興武漢濟南青島新疆太原
亞太區:印度韓國泰國新加坡馬來西亞澳大利亞
Linux
Linux進程間通信的方法

  Linux進程間通信的方法

  1、管道(pipe)

  用語具有親緣關系進程間的通信

  匿名一次性使用的,半雙工。一個進程往輸出端寫管道,另一個進程從輸入端讀管道。

  #include

  int pipe(int fd[2]);

  fd[0]:表示讀端

  fd[1]:表示寫端

  2、有名管道(named pipe)

  允許無親緣關系進程間的通信

  有名管道,作為特別文件存儲于文件系統中。有名管道一旦建立就存在于文件系統中,除非顯示的unlink

  #include

  #include

  int mknod(const char *path,mode_t mod,dev_t dev);

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

  path:創建有名管道的全路徑名

  mod:創建有名管道的模式,指存取權限

  dev:設備值,該值取決于文件創建的種類,它只在創建設備文件時才會用到

  注意:有名管道創建后就可以使用了,有名管道和管道的使用方法基本是相同的。只是使用有名管道的時候必須先調用open()將其打開

  因為有名管道是一個存在于硬盤上的文件,而管道是存在于內存中的特殊文件

  下面的程序一個讀管道,另一個寫管道,這兩個函數用的是非阻塞讀寫管道

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #define FIFO "/tmp/myfifo"

  main(int argc, char** argv)

  {

  char buf_r[100];

  int fd;

  int nread;

  if((mkfifo(FIFO,O_CREAT|O_EXCL) printf("cannot create fifoserver\n");

  printf("Preparing for reading bytes...\n");

  memset(buf_r,0,sizeof(buf_r));

  fd=open(FIFO,O_RDONLY|O_NONBLOCK,0);

  if(fd==-1)

  {

  perror("open");

  exit(1);

  }

  while(1)

  {

  memset(buf_r,0,sizeof(buf_r));

  if((nread=read(fd,buf_r,100))==-1){

  if(errno==EAGAIN)

  printf("no data yet\n");

  }

  printf("read %s from FIFO\n",buf_r);

  sleep(1);

  }

  pause();

  unlink(FIFO);

  }

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #define FIFO "/tmp/myfifo"

  main(int argc,char** argv)

  {

  int fd;

  char w_buf[100];

  int nwrite;

  if(fd==-1)

  if(errno==ENXIO)

  printf("open error; no reading process\n");

  fd=open(FIFO,O_WRONLY|O_NONBLOCK,0);

  if(argc==1)

  printf("Please send something\n");

  strcpy(w_buf,argv[1]);

  if((nwrite=write(fd,w_buf,100))==-1)

  {

  if(errno==EAGAIN)

  printf("The FIFO has not been read yet.Please try later\n");

  }

  else

  printf("write %s to the FIFO\n",w_buf);

  }

  3、信號量

  主要用于進程間及同一進程不同線程之間的同步手段

  4、消息隊列

  克服信號量有限,可寫可讀

  5、信號(Signal)

  比較復雜,用于通知接受進程有某事發生

  6、共享內存

  ***有用的進程間通信方式,使得多個進程可訪問同以內存空間,但需要依靠某種同步機制

  ******步:創建共享內存

  第二步:映射共享內存

  7、套接字

  不同機器之間通信

 
客戶服務 +more
上門服務
服務承諾
異地恢復
收費標準
付款方式
疑難解答
服務特色 +more
·免費檢測
·免費提供3天備份
·專業工程師提供服務
·免費清潔送修的介質
·數據恢復前報價,客戶確認后工程師開始數據恢復
·數據恢復不成功不收費
·與客戶簽訂保密協議,對客戶的數
 據嚴格保密,整個恢復過程不會對
 客戶的原盤有任何的寫操作,以確
 保原盤的數據完全

·免費參觀恢復全過程

·工程師在線免費咨詢

·專業工程師提供服務
服務器數據恢復 點擊這里給我發消

息
數據庫修復
點擊這里給我發

消息
硬盤數據恢復
點擊這里給我發消

息
主站蜘蛛池模板: 国产怡春院无码一区二区| av无码精品一区二区三区四区| 国产熟女一区二区三区四区五区 | 国产午夜三级一区二区三| 国产乱码精品一区二区三区四川 | 精品国产一区二区22| 亚洲av成人一区二区三区| 一区二区三区四区在线播放| 性无码一区二区三区在线观看| 国产精品美女一区二区| 久久高清一区二区三区| 无码av不卡一区二区三区| 性色AV一区二区三区| 久久一区二区明星换脸| 国产午夜精品一区二区三区 | 秋霞无码一区二区| 一区二区三区影院| 狠狠色婷婷久久一区二区三区| 激情啪啪精品一区二区| 老湿机一区午夜精品免费福利| 国产伦精品一区二区三区不卡| 无码少妇A片一区二区三区| 精品人妻系列无码一区二区三区| 91一区二区视频| 国产成人一区二区三中文| 亚洲国产精品一区二区三区在线观看| 日本一区二区在线播放| 99精品一区二区三区| 亚洲综合av一区二区三区| 国模无码视频一区二区三区| 日韩精品免费一区二区三区| 美女视频一区二区| 任你躁国产自任一区二区三区| 亚洲AV无码一区二区二三区入口| 色欲AV蜜臀一区二区三区| 中文字幕日韩精品一区二区三区| 色婷婷香蕉在线一区二区| 天天躁日日躁狠狠躁一区| 亚洲国产成人久久一区WWW | 国产一区视频在线免费观看| 国产SUV精品一区二区88L|