繁体   English   中英

在 C 中从管道写入和读取整数

[英]Writing and Reading integers from a pipe in C

我试图理解在 C 中使用管道,特别是写入和读取整数。 我有一个创建 3 个子进程的父进程。 两个子进程计算数字并将它们写入管道。 第三个进程从两个管道中读取,然后显示。 听起来很简单吧?

我找到了这篇文章: 如何在两个进程之间用管道发送整数! 关于如何通过管道发送整数并遵循它,但我没有产生正确的输出。

编辑:为了进一步澄清,我像这样启动管道:

int p1[2]; //pipe1 
int p2[2]; //pipe2
pipe(p1); //intialize pipe1 for between process 1 & 3
pipe(p2); //initialize pipe2 for between process 2 & 3

经过一些调试,我注意到错误的数字被写入管道。 这就是我向管道写入 int 的方式:

int c0 = 18;
write(p2[1], &c0, sizeof(c0));

这就是我的阅读方式:

int disp[4];
read(p1[0], &disp[0], sizeof(disp[0]));

依此类推,直到数组已满。

现在,不是向管道写入 14 之类的内容,而是写入了 17462 之类的大数字。我假设它正在写入地址,对吗? 如果是这样,我将如何将实际整数写入管道? 我是否应该从语句中删除“&”,因为这样做会给我带来有关转换的错误。 任何提示,建议,评论总是受到赞赏。 谢谢。

您可能需要在管道上获得写锁。

如果进程 1 和进程 2 同时写入管道,您可能会在管道中混合字节,从而导致读取的结果将是一些您从未见过的奇怪数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM