c - 基于管道的进程间通信程序

标签 c ipc pipe

有谁知道如何向管道写入数字,因为首先我必须打开管道,然后向其写入合适的数字。

另外,写完后我还必须读取数字并打印它。

我尝试使用“popen”命令打开管道,但我不确定将什么作为 popen 的第一个参数,即:-

       popen(const char *command, const char *type)

我想问如果我想向管道写入一个数字,我应该在这里给出什么命令..??

最佳答案

您应该使用fd=open(FIFO_NAME,O_RDONLY);来读取fifo文件。

mkfifo(FIFO_NAME,S_IFIFO|S_IRWXU|S_IRWXG|S_IRWXO);
    fd=open(FIFO_NAME,O_WRONLY);

fifo也称为管道。这里mkfifo创建一个fifo文件并写入文件。

注意:- 要读取或写入 fifo,应该有一个读取器和写入器进程,否则它将阻塞其中一个进程。

如果不想写一个读取进程,可以使用cat命令,而写进程可以查看fifo文件内容。

关于c - 基于管道的进程间通信程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18205994/

相关文章:

c - 为什么没有关于管道的维基百科?

我可以使用变量名称列表动态访问变量吗?

c - 在结构中初始化结构?

c++ - boost::interprocess message_queue 性能 - 相当慢?

database - ODBC 驱动程序运行在内核空间还是用户空间?为什么?

c# - ffmpeg 输出管道到命名的 Windows 管道

C - 确定字符/字符串的字母顺序

c - malloc 和 scanf 字符串

c# - 从 C# 调用非托管代码 - 返回带有数组的结构

c - (在C 中模拟UNIX SHELL)如何在for 循环中实现多个管道?