使用管道将文件 i/o 传输到另一个进程

     2023-02-16     84

关键词:

【中文标题】使用管道将文件 i/o 传输到另一个进程【英文标题】:using pipes to channel file i/o to another process 【发布时间】:2011-03-12 19:44:17 【问题描述】:

刚开始学习/使用管道,想知道如何将应用程序的文件输出路由到管道中,以便另一个应用程序可以使用它。

确切地说,我想将 ffmpeg 的输出(转码视频数据)传送到我的应用程序中以使用它。如果我创建一个像/tmp/out.mp4 这样的命名管道并将其作为输出文件名提供给ffmpeg,则ffmpeg 将尝试再次创建此文件,可能会覆盖我的管道(或类似的东西)。如何处理这种情况?

是否有任何通用的方法可以透明地转移应用程序的文件 IO?

(我正在尝试编写一个视频流服务器(只是为了学习和娱乐),它在流式传输过程中将 avi 等格式转码为 mpeg4 等流式友好格式,我发现 ffmpeg 太慢了,它需要 2秒转码 1 秒视频 :(

是我的设置/PC 的问题还是 ffmpeg 以迟缓着称? )

PS : 顺便说一下,我是用 C 写的。

【问题讨论】:

【参考方案1】:

可以说服ffmpeg输出到管道:

ffmpeg -i whatever.avi -f mp4 -

“-”告诉它输出到标准输出而不是文件,“-f”告诉它输出文件应该是什么输出。

当然,您可以将其重定向到命名管道,但使用 popen 调用它以直接将输出作为文件描述符获取似乎是我的方法。

【讨论】:

嗨,freiheit,你能看看这个吗,***.com/questions/5302196/…【参考方案2】:

ffmpeg 也可以像这样从标准输入读取并写入标准输出:

ffmpeg -i pipe:0 -f wav pipe:1

其中 0 和 1 是标准 POSIX 文件描述符。

【讨论】:

使用 !ERRORLEVEL!在通过管道传输到另一个进程的代码块中

】使用!ERRORLEVEL!在通过管道传输到另一个进程的代码块中【英文标题】:Using!ERRORLEVEL!incodeblockpipedtoanotherprocess【发布时间】:2021-02-1610:04:09【问题描述】:为什么!ERRORLEVEL!在以下示例中不起作用?@echooffsetlocalenabledelayedexpansion(wi... 查看详情

如何跨(计算)节点使用 unix 管道?

】如何跨(计算)节点使用unix管道?【英文标题】:HowcanIuseunixpipingacross(compute)nodes?【发布时间】:2013-10-0214:56:45【问题描述】:我正在尝试使用unix管道和FIFO:s(命名管道)设置处理命令的管道。我还想将进程的输出发送/流式... 查看详情

linux进程间通信

...通信的几种主要手段简介:一般文件的I/O函数都可以用于管道,如close、read、write等等。实例1:用于shell管道可用于输入输出重定向,它将一个命令的输出直接定向到另一个命令的输入。比如,当在某个shell程序(Bourneshell或Cshell... 查看详情

Powershell:将外部命令输出通过管道传输到另一个外部命令

】Powershell:将外部命令输出通过管道传输到另一个外部命令【英文标题】:Powershell:Pipeexternalcommandoutputtoanotherexternalcommand【发布时间】:2013-10-1319:06:06【问题描述】:我怎样才能让PowerShell理解这种类型的东西:Robocopy.exe|Find.exe"... 查看详情

标准i/o和管道(代码片段)

标准I/O和管道>重定向操作符>,>>还能创建新文件>覆盖>>追加set-C禁止将内容覆盖已有文件,但可追加(相当于一个开关)>|file强制覆盖set+C允许覆盖1>标准输出重定向到一个文件里面2>标准错误重定向到一个文... 查看详情

标准i/o和管道

...章目录:一.三种I/O设备二.把I/O重定向入文件三.tr命令的使用四.使用管道链接命令五.tee命令的使用三种I/O设备(1)标准输入和输出程序:指令+数据a.指令:决定了功能是什么数据:b.读入数据:input输出数据:output(2)打开的文件都... 查看详情

Linux。 C 中的管道。将数据发送到另一个进程。写作和阅读

】Linux。C中的管道。将数据发送到另一个进程。写作和阅读【英文标题】:Linux.PipesinC.Sendingdatatoanotherprocess.Writingandreading【发布时间】:2016-12-1612:43:35【问题描述】:(警告-不是完美的英语!)在拼贴画上,他们给了我一项任... 查看详情

如何在 Linux 上使用标准 I/O 函数在多个进程中写入文件?

】如何在Linux上使用标准I/O函数在多个进程中写入文件?【英文标题】:HowtowriteafileinmultipleprocessesusingstandardI/OfunctionsonLinux?【发布时间】:2013-04-1515:22:43【问题描述】:我正在开发一项功能,该功能需要在多个进程中编写单个日... 查看详情

检测命名管道与 I/O 完成断开连接

...发布时间】:2016-02-0400:14:14【问题描述】:我有一个关于使用具有I/O完成端口的命名管道检测客户端断开连接的正确方法的问题。我们有一个服务器可以创建子进程,并将标准输入/标准输出重定向到命名管道。管道已打开OVERLAPP... 查看详情

如何通过命名管道传输文件描述符

】如何通过命名管道传输文件描述符【英文标题】:HowcanItransferafiledescriptoroveranamedpipe【发布时间】:2016-06-0109:22:26【问题描述】:我的目标是为守护进程创建一个概念,这些守护进程在本地(即不通过网络)与其他进程交互,... 查看详情

将批处理文件输出管道传输到 Python 脚本

...输出。我想从批处理文件中获取这些消息并在python脚本中使用它们。有人对如何 查看详情

linux——标准i/o以及管道

.../O输出错误重定向入文件五、tr六、从文件中导入STDIN七、使用管道链接命令八、tee一、什么是I/O    I/O(input/output),即输入/输出端口。    每个设备都会有一个专用的I/O地址,用来处理自己的输入... 查看详情

如何将 SecureString 从一个进程传递到另一个进程?

...将SecureString从我的客户端进程传递给我的服务。两者都是使用.NET和C#编写的。我正在使用命名管道在进程之间传递数据。我的问题是如何以字节数组的形式访问SecureString以将其传递给另一个 查看详情

如何将最佳参数(使用 GridSearchCV)从管道传递到另一个管道

】如何将最佳参数(使用GridSearchCV)从管道传递到另一个管道【英文标题】:Howtopassonbestparameters(usingGridSearchCV)fromapipelinetoanotherpipeline【发布时间】:2018-05-0217:35:23【问题描述】:我有一个自定义管道,我正在使用Sklearn的GridSearc... 查看详情

将多个输入管道传输到 Ghostscript

...【发布时间】:2016-10-1716:44:29【问题描述】:我正在尝试使用Ghostscript创建一个单行Linux命令来组合两个PDF文件(从URL下载)。但是,我不想创建任何临时文件(一切都应该在内存中完成)。以下命令似乎不起作用(我尝试通过... 查看详情

进程间通信(代码片段)

...输或者接收时用到的文件描述符,其中fd[0]是接收的时候使用的文件描述符,即管道出口;而fd[1]是传输的时候用到的文件描述符,即管道入口。?为了使数据可以双向传递,可以使用两个管道,一个管道负责进程1的写和进程2的... 查看详情

Linux 中使用管道的进程间通信

】Linux中使用管道的进程间通信【英文标题】:InterprocesscommunicationusingpipeinLinux【发布时间】:2013-08-1005:48:09【问题描述】:我已经编写了用于在linux中写入数字以进行管道传输的代码。如下,但显示错误,谁能帮我解决这个问题... 查看详情

i/o重定向及管道(代码片段)

打开的文件都有一个fd:filedescriptor(文件描述符)标准输入:keyborad,0标准输出:monitor,1标准错误输出:monitor,2I/O重定向:改变标准位置输出重定向:COMMAND>NEW_POS,COMMAND>>NEW_POS:覆盖重定向,目标文件中的原有文件内... 查看详情