【发布时间】:2011-11-13 15:44:40
【问题描述】:
我正在编写一个基本的 UNIX 程序,该程序涉及相互发送消息的进程。我同步进程的想法是简单地使用一组标志来指示进程是否已到达代码中的某个点。
例如,我希望所有进程都等到全部创建完毕。我还希望他们等到他们都完成相互发送消息后再开始阅读他们的管道。
我知道一个进程在写入之前定义的变量时会执行写时复制操作。
我想知道的是,如果我创建一个标志数组,是复制指向该数组的指针,还是复制整个数组(从而使我的想法毫无用处)。
我还想了解有关进程间通信和进程同步的任何提示。
编辑: 进程正在写入彼此进程的管道。每个进程都会发送以下信息:
typedef struct MessageCDT{
pid_t destination;
pid_t source;
int num;
} Message;
所以,只是消息的来源和一些随机数。然后每个进程都会将消息打印到标准输出:类似于“进程 20 从进程 3 收到 5724244”。
【问题讨论】:
-
您能发布更多有关流程的信息吗?他们在做什么?你为什么不使用线程?为什么你使用一组标志而不是一个控制所有其他进程的控制进程?
-
@FranziskusKarsunke 对不起,我已经更新了信息。这只是一个家庭作业。多线程不是我正在研究的。您能否详细说明控制过程的工作原理?
-
嗯...如果是作业你应该自己做^^
-
@FranziskusKarsunke 我只是想理解一个概念,也许还有一些技巧。我不是在寻找实际的代码。
标签: linux unix process fork pipe