在管道中发送 EOF 而不关闭它

2024-01-06

我正在编写一个使用 GnuPlot 来绘制数据的应用程序。 我决定使用“二进制”格式,而不是使用文本格式通过管道来通信两个程序(由于 vprintf() 和传递的数据量很大,速度很慢)。

问题是,在二进制格式中,GnuPlot 期望 EOF (Ctrl+D) 结束传输并绘制数据。这在 UNIX 控制台模式下很容易。只需按 Ctrl+D 即可结束数据输入、绘制数据并保持控制台打开等待更多命令。

但在我的 C++ 应用程序中,发送 EOF 的唯一方法是关闭管道。这会导致 gnuplot 进程终止并且不会在屏幕上显示绘图。

¿有什么技巧可以将 EOF 发送到管道吗? ¿UNIX 终端如何在不关闭正在运行的进程的管道的情况下发送 EOF?

PD:我无法使用“-persist”关闭并重新打开 GnuPlot,因为这会生成新的绘图而不是更新旧的绘图(它是一个实时系统,因此它会在 ~inf 绘图窗口附近生成)。


我认为你想做的事情不会成功。参见示例:

http://www.velocityreviews.com/forums/t365339-write-eof-without-looking.html http://www.velocityreviews.com/forums/t365339-write-eof-without-closing.html

我们可以自己写一个EOF字符吗? https://stackoverflow.com/questions/3061135/can-we-write-an-eof-character-ourselves

基本上 EOF 本身不是字符。这是文件的末尾。

因此,正如我在上面的评论中指出的那样,我建议您尝试使用直接连接到 gnuplot 的库。然后你应该能够控制它,以便实现你想要的行为(最有可能使用类似的东西replot).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在管道中发送 EOF 而不关闭它 的相关文章

  • 递归地更改绘图类型(带线、带点)

    我正在尝试为基于 Julia 的 gnuplot 创建一个包装器来自动化我的绘图 我的目标是为 Julia 提供要绘制的文件名 要使用的线条样式类型以及要绘制的列 例如 如果我有文件test1 and test2 都有 3 列和标题 tim
  • 当输出重定向到文件时,xcodebuild 会损坏测试结果输出

    我将 Jenkins 与 Xcode 插件配置为通过将测试构建操作添加到自定义 xcodebuild 参数设置来运行单元测试 有关让 Jenkins 使用 Xcode 5 运行单元测试的更多信息 请参阅此question https sta
  • 将标准输出重定向到文件

    我正在尝试执行相当于 bash 命令的操作ls gt foo txt in C 下面的代码将输出重定向到变量 include
  • 管道和流程管理

    我正在开发一个用 C 实现的小型 shell tsh 这是一项作业 作业的一部分属于 PIPING 我必须将一个命令的输出通过管道传输到另一个命令 例如 ls l sort 当我运行 shell 时 我在其上执行的每个命令都由它生成的子进程
  • 反馈两个进程的stdin和stdout

    我有两个进程通过标准输入和标准输出相互连接 假设我有进程 A 和进程 B B 的标准输出需要输入到 A 的标准输入中 A 的标准输出需要输入到进程 B 的标准输出中 是否有一种简单的方法可以用简单的命令来表达这种关系 或者是否有一个基本的
  • 使用管道的Python多进程非阻塞相互通信

    是否可以使用管道以非阻塞方式接收进程间通信 考虑以下代码 from multiprocessing import Process Pipe import time def f conn time sleep 3 conn send Done
  • 套接字对和一对无名管道有什么区别吗?

    我不仅想知道用户端的差异 还想知道 Linux 内核实现中的差异 共同部分 管道是单向的 因此需要两个管道才能进行双向通信 而套接字对是双向的 管道始终是面向流的 而套接字对可以是面向数据报的 套接字对正常AF UNIX套接字 这意味着辅助
  • 使用 \Z 与 \z 作为扫描仪分隔符的行为

    编辑 我找到了答案 但由于新用户的限制 我无法回答这个问题 不管怎样 这是 Java 中的一个已知错误 http bugs java com bugdatabase view bug do bug id 8028387 http bugs
  • 无法在 Linux 中阻止从命名管道 (FIFO) 读取

    很奇怪 我似乎无法完成这项工作 这是我的架构 我有一个命名管道 它将在永远运行 root读取器进程和多个应用程序编写器进程 读者进程必须是blocking当作家们在nonblocking 因此 这就是我在阅读器进程中所做的 该进程将运行ro
  • ifstream 不读取 EOF 字符

    我正在创建一个程序 在 C 中 该程序采用 ASCII 文件并从每一行读取一些值 直到到达文件末尾 我在用ifstream读取文件 当我使用ifstream eof 方法 然而 这一次 即使它在我的测试用例中找到了 eof 字符 当我分析其
  • POSIX:FreeBSD 与 Linux 中的管道系统调用

    在 Linux 2 6 35 22 generic 中 man pipe指出 pipeline 创建一个管道 一个可用于进程间通信的单向数据通道 在 FreeBSD 6 3 RELEASE p5 中 man pipe指出 pipeline
  • EOF 符号常量

    From C 编程语言 int c while c getchar EOF putchar c 解决办法是getchar当没有更多输入时 返回一个独特的值 该值不能与任何真实字符混淆 这个值称为EOF 表示 文件结束 我们必须声明c是一个足
  • Gnuplot:如何在轴和 pm3d 地图之间有一些空间

    这是我的代码 f x y sin 1 3 x cos 9 y cos 8 x sin 1 9 y cos y 2 x set size square set xrange 5 5 set yrange 5 5 set contour bas
  • execlp 多个“程序”

    我想运行类似的东西 cat file tar base64 myprogram c base64 d tar zvt I use execlp运行该进程 当我尝试运行类似的东西时cat它有效 但如果我尝试运行base64 d tar zvt
  • 我应该如何格式化 .dat 文件以便制作 3D 矢量图?

    我正在为大学做这个编程任务 我们必须写一个c 计算 3D 空间中某些线圈的磁场矢量的程序 我已经成功编写了这个程序 并且我认为它运行得很好 不过 我想添加一个特殊的东西 这是我的试卷 所以它必须特别好 我想绘制出向量 我习惯打电话gnupl
  • 将 stdin/stdout 从执行进程重定向到 Perl 中的管道

    我试图让执行子进程中的 STDOUT STDERR 通过 Perl 中的管道返回到父进程 我见过的最接近我想做的事情是 http forums devshed com perl programming 6 exec and redirect
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s
  • 如何为 gnuplot 创建数据文件?

    我正在尝试用 gnuplot 制作图表 我指定了我的xrange yrange and labels 但是当我输入以下命令时 gnuplot gt 使用 1 2 线条绘制 data txt gnuplot 告诉我 警告 跳过不可读的文件 d
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import

随机推荐