问题标签 [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.
c++ - 是否有像 WaitNamedPipe 这样的函数或在 C++/linux 上实现这一点的方法?(因此该过程不会无限期地阻塞管道)
我的 C++ 程序中有一个命名管道。子进程在其中写入一个值,父进程读取它。我通过 mkfifo 创建了管道,并且所有操作都被阻塞(在尝试打开进行写入之前无法打开 fifo 进行读取,不幸的是,有时我的子进程不会因为子进程运行的程序中的错误而停止。这不是我的在此外部程序中修复此错误的任务,但我想确保父进程不会在阻塞的打开 fifo 调用上无限停止,而是在一段时间后继续(不读取管道中的值)。
所以我需要它类似于 WaitNamedPipe 函数。此函数一直等待,直到超时间隔过去或指定命名管道的实例可用于连接。http://ist.marshall.edu/ist480acp/namedpipes.html#WaitNamedPipe
当然,另一种实现这一点的方法也有效。我在父进程中尝试了一个循环,它总是尝试打开管道进行读取,然后在无法打开时休眠。这似乎没有效果,可能是因为父进程在第一次打开调用时被阻塞了。
谢谢你的帮助。
python - 如何在 Python 中正确写入 FIFO?
当我在 Python 中打开 FIFO(命名管道)进行写入时,发生了一些非常奇怪的事情。考虑一下当我尝试打开一个 FIFO 以在交互式解释器中写入时会发生什么:
上面的行会阻塞,直到我打开另一个解释器并输入以下内容:
我不明白为什么我必须等待管道打开才能阅读,但让我们跳过它。上面的代码将阻塞,直到有预期的数据可用。但是,假设我回到第一个解释器窗口并输入:
预期的行为是在第二个解释器上调用read
将返回,我们将在屏幕上看到数据,但我没有发生这种情况。如果我打电话os.fsync
给以下情况:
而先进先出阅读器仍在等待。但是,如果我打电话,fifo_writer.close()
那么数据就会被刷新。如果我使用 shell 命令来馈送管道:
那么阅读器的输出是:
有没有人经历过这个?如果是这样,是否有解决方法?我当前的操作系统是带有 Linux 2.6.38 的 Ubuntu 11.04。
linux - 如何在 linux 下使用持久化命名管道?
有时使用命名管道非常方便,例如mkfifo file.fifo
.
但是 file.fifo 不是持久的,如果计算机重新启动或编写器进程崩溃,我无法从管道中得到任何信息。那么,有什么方法可以让管道数据存储在磁盘而不是内存中?
谢谢。
c - 先进先出服务器程序
我在linux中输入的上述程序。它基本上必须在不同的终端中连接客户端和服务器。但是当我以正确的顺序运行它们时,即
- 编译服务器 -> 运行服务器
- 编译客户端->运行客户端
终端只是不做任何事情。它甚至不打印"Trying to connect"
第一条printf
语句的部分。这里有什么错误?
编辑
我检查了mkfifo
@parapura rajkumar 所说的返回值。但它仍然保持不变。这是我更改的服务器代码。
c++ - 为什么我的程序在打开 mkfifo 管道时会挂起?
我使用 mkfifo 创建命名管道。然后我使用下面的程序打开它。但是,程序挂在“fopen”行。这里有什么问题吗?
bash - Bash 脚本语句
我试图弄清楚一行在 bash 脚本文件中的含义:
这是我的理解: nc -l 部分在端口 12345 上创建类似服务器端的行为,该行为从 mypipe 接收输入,将输出通过管道传输到程序,将程序输出通过管道传输回 mypipe。
我的问题首先是我的分析是否正确?二、mkfifo到底是什么东西,比如它是什么样的文件?我也不明白 nc -l 究竟输出了什么以便通过管道输入 myprogram。
谢谢你的帮助。
c - 正确的 FIFO 客户端-服务器连接
我正在尝试编写简单的客户端和服务器 C 程序,在不同的终端中相互通信。
服务器必须创建一个公共 fifo 并等待客户端。同时,客户端正在创建自己的先进先出,服务器的响应将通过该先进先出。客户端的任务是向服务器发送队列创建的名称,并返回ls
命令的结果。
我确实搜索了一个答案,例如:fifo-server-program、example-of-using-named-pipes-in-linux-bash、how-to-send-a-simple-string-between-two-programs-使用管道。我从第三个链接的代码开始,慢慢修改。
我现在得到的是一个客户端从用户那里获取输入,将其发送到服务器并接收回来。但它只工作一次。我不知道为什么。main函数的主体如下。我将不胜感激任何帮助。
编辑: 我让它工作了!:D 代码如下,也许它会对某人有所帮助。
server.c 代码:
client.c 代码:
bash - 如何将一个命名管道的输出反馈到另一个命名管道?
我正在向 bash 脚本添加一些自定义日志记录功能,但无法弄清楚为什么它不会从一个命名管道获取输出并将其反馈回另一个命名管道。
这是脚本的基本版本 ( http://pastebin.com/RMt1FYPc ):
我认为第 34 行和第 35 行的命令会获取$data
from$PIPE_ECHO
并将其输出到$PIPE_LOG
. 但是,它不起作用。相反,我必须将该输出直接发送到日志文件,而无需通过$PIPE_LOG
.
为什么这不像我预期的那样工作?
编辑:我将 shebang 更改为“bash”。不过,问题是一样的。
解决方案: AH 的回答帮助我了解我没有正确使用命名管道。从那以后,我什至不使用命名管道来解决我的问题。该解决方案在这里: http: //pastebin.com/VFLjZpC3
python - 什么情况会导致打开的、非阻塞的命名管道 (fifo) 对读取“不可用”?
情况:
读取偶尔会引发 errno -11:资源暂时不可用。
何时引发此错误?这似乎非常罕见,因为常见情况会返回数据:
- 如果没有 writer 打开管道,则返回空 str ('')。
- 如果 writer 已打开管道,但 fifo 中没有数据,则还返回空 str ('')
- 当然,如果作者将数据放入先进先出,该数据将被读取。
linux - PhantomJS:管道输入
我正在尝试使用 PhantomJS 将 html 页面呈现为 pdf。我不想将文件写入磁盘,我在内存中有 html,我想要在内存中保存 pdf。
使用Pooria Azimi 在这个问题上的出色回答,我能够从命名管道中获取pdf。在另一端尝试相同的操作(用命名管道替换输入文件)时,我最终得到一个空白的 pdf。
这就是我现在正在做的事情(简化):
然后在另一个终端:
文件 out.pdf 已创建,但为空白。我错过了什么吗?