簡體   English   中英

使用管道進行進程間通信

[英]Inter-process communication using pipes

我認為這可能是一個顯而易見的問題,但我只是想通過詢問你們來確定。

我正在使用 pipe 系統調用進行父子進程通信,以創建未命名的 pipe。

我的子進程需要收集一些信息並將其發送給它的父進程。 我的問題是:

  1. 我只能使用寫入和讀取功能發送和接收字符串,對嗎? 我必須忘記發送結構。
  2. 如果我上一個問題的答案是“是”,那么將所有信息傳遞給父進程的正確方法是調用函數 write 和 read 幾次?

非常感謝!

您可以write()read() struct 使用指向struct的指針作為buf參數。 當您想要在未在同一台機器上運行的進程之間執行此操作時,您會遇到問題並且需要對可移植表示進行編組/解組,以確保在任何地方都以相同的方式理解值。 這包括識別數據“數據包”的開始和結束,因為 pipe 並沒有真正的數據包概念:如果您所做的只是編寫一系列相同的struct ,那么您只需write()它們並讀者可以依靠read()返回 0 來指示系列的結束; 但是如果您還需要發送其他信息,那么您將需要一個框架協議來說明“接下來是這樣那樣的struct ”、“接下來是字符串”等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM