问题标签 [mkfifo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 进程间通信FIFO java
嗨,我正在尝试使用 FIFO 在 Java 中实现 IPC 我用 FIFO 创建了一个 FIFO
然后我尝试打开和 FileWriter
但它阻塞在这条线上。
知道问题可能是什么吗?
c - 并非所有写入 FIFO 的消息都在读取时收到
在 linux 下使用 C 中的 fifo 文件时,我遇到了一个奇怪的问题。
让我们从代码开始:
现在有一些关于我想要代码做什么的细节。
运行这样的程序后:
我想在终端:
但不是这个,我只得到这个:
问题是:我想向 FIFO 写入几条消息,然后通过读取 FIFO,它打算接收存储在其中的整个文本。但不幸的是,只有最后一条消息存储/写入标准输出(在本例中为终端),就像执行的唯一命令是:
我试图删除这一行:
因为我想,如果 FIFO 文件已经存在,这一行可以创建并覆盖现有的 FIFO 文件。但这并没有改变什么。
那么我必须做些什么才能使其按预期工作?
c - 在 fifo 中同时读取和写入(在后面)
我正在尝试通过 fifo 将 file1 的内容复制到其他 file2 中。我想在fifo中写回前四个字符(在读取期间,而不是在将内容从file1写入fifo时更早),然后也将其复制到file2中。但是前四个字符不会附加在后面,而是随机插入到中间。我的代码是
现在,如果在终端上,我运行
$ ./a.out a.txt b.txt
我想从 a.txt 复制到 b.txt,b.txt 包含 a.txt 加上在字符之间随机插入的前 4 个字符。
java - 在 Java 中设置阻塞文件读取
我想设置一个用 Java 读取的阻塞文件。也就是说,有一个文件,当被调用FileInputStream
任何read()
方法时,调用会阻塞。
我想不出一种简单的独立于操作系统的方式——在类 Unix 操作系统上,我可以尝试使用mkfifo
该文件创建一个 FIFO 并从中读取。一种可能的解决方法是创建一个非常大的文件并从中读取 - 在我捕获堆栈之前读取不太可能完成,但它丑陋且缓慢(实际上,缓存时读取仍然可以非常快)。
相应的套接字read()
情况很容易设置 - 自己创建一个套接字并从中读取,您可以进行确定性阻塞。
目的是检查方法的堆栈以确定在这种情况下的顶部帧是什么。想象一下,我有一个组件,它定期对所有正在运行的线程的堆栈跟踪进行采样,然后尝试对该线程目前正在做什么进行分类。它可以做的一件事是文件 IO。所以我需要知道文件 IO 期间的“栈顶”是什么样的。我已经通过实验确定了这一点(只需以各种方式读取文件并对堆栈进行采样),但我想编写一个测试,如果这种情况发生变化,它将失败。
编写此类测试的自然方法是启动一个执行文件读取的线程,然后检查顶部帧。为了可靠地做到这一点,我想要一个阻塞读取(否则线程可能会在获取堆栈跟踪之前完成它的读取,等等)。
c - 从 mkfifo 中的超级用户进程授予权限
我需要使用mkfifo()
超级用户进程创建一个管道,该管道必须可以从一个非超级用户的进程写入。
读者:
作家:
我打电话给./writer
和sudo ./reader
。
当我的作家尝试在返回分段错误的管道中写入时。如果我查看/tmp/myfifo
我发现权限prwxr-xr-x
,但我想要prw-rw-rw-
。
fifo - 不使用 mkfifo 或 mknod 制作 fifo 文件
我试图使用 vlc 和 mpg123 播放器通过 gnuradio 流式传输 mp3 音乐。按照本网站的示例 http://www.opendigitalradio.org/Simple_FM_transmitter_using_gnuradio
命令是:
使用我自己的 mp3 流,我按照示例进行操作,但是有一次我忘记放
到终端,而不是只输入
直接到终端。结果是一个未突出显示的 .fifo 文件(如使用 mkfifo 创建的文件)
当与 gnuradio 一起使用时,使用 mkfifo 制作的 fifo 文件只能播放一次,并且它的大小总是会回到 0 字节。
虽然我在不使用 mkfifo 的情况下意外创建的那个将字节保留了很长时间,而且我可以随时访问它,这对我来说更有益。
以这种方式制作fifos有缺点吗?也有人可以告诉我我实际上做了什么吗?
太感谢了!
c - Loop 无法继续循环
每次写入特定的 FIFO 时,我都在编写一些代码来创建一个新文件夹:
}
但是,当运行时会发生这种情况:
我做错了什么?为什么它不继续循环并等待更多输入?FIFO是为读写而打开的,这样写停止时它就不会关闭,是不是不能正常工作?
unix - FIFO 是否保留消息边界?
我们知道 TCP 不会保留消息边界,但 UDP 会。但是管道和 FIFO 是什么情况呢?例如,假设我们在同一主机上有一个服务器和两个客户端,服务器使用一个众所周知的路径名创建一个 FIFO,并打开这个 FIFO 进行读取。客户端 1 和客户端 2 都打开此 FIFO 进行写入。并发生以下事件:
- 客户端 1 将 100 个字节写入 FIFO。
- 客户端 2 将 100 个字节写入 FIFO。
服务器使用足够大的缓冲区读取此 FIFO,例如:
char buf[1024]; read(fifofd, buf, sizeof(buf));
我的问题是:第 3 步将返回多少数据?它只是返回客户端 1 发送的前 100 个字节,所以我们不必担心消息边界吗?或者它是否返回所有 200 个字节,所以我们必须将来自客户端 1 的消息和来自客户端 2 的消息分开?
tcl - TCL中的FIFO文件
我需要在命名管道中解压缩文件返回它:
它挂在
exec gunzip -c $fileName > $tmpFileName &
linux - 在 Bash 中带有 fifo 队列的 inotifywait
我写了一个小的 Bash 脚本,它使用 inotify-tools 和 inotify 接口。我的问题是,这个函数中的一个命令可以阻止执行,直到它完成。这样功能就会卡住。
为了解决这个问题,我想将检测到的文件排队(通过关闭事件),并从另一个函数中读取队列。有人知道如何在 Bash 中执行此操作吗?
下面的变量是用于查找目录或分配文件名的简单字符串。
我正在将文件复制到 SAN 卷,该卷有时会出现响应时间变化。这就是为什么这个功能会卡住一段时间的原因。我用 Rsync 替换了 cp 因为我需要吞吐量统计信息。Cp(来自 coreutils)显然没有这样做。