问题标签 [process-substitution]
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++ - 在 C++ 中访问由 Bash 进程替换创建的“虚拟文件”
我有一个 C++ 可执行文件,在正常使用中,它以下列方式接受文件名作为参数选项:
我想使用 Bash 进程替换来创建一个“虚拟文件”并通过以下方式将信息(简单的逐行数据)发送到该可执行文件:
但是,当我使用此进程替换时,我的 C++ 程序没有访问信息。C++程序中代码的主要文件读取部分如下:
你能指出我解决这个阅读问题的正确方向吗?是否有一些更好的方法适用于正常文件读取和进程替换“文件”读取?
我是这个过程替换的新手,我非常感谢对此提供的任何帮助。
编辑:
在一些评论之后,下面是一个最小的工作示例,说明了我遇到的问题:
编辑:
我在下面添加了解决方案代码(根据其他人的评论):
bash - 进程替换 - tr 表示“额外操作数 /dev/fd/63”
我正在努力理解流程替换。据我所知,
都应该给出相同的输出。但是第一个有效(输出是'acd')但是第二个说
为什么是这样?tr 不只是通过管道接收“abcd”,而不是“/dev/fd/63”吗?
bash - 进程替换捕获stderr
对于这个问题,我将使用grep
,因为它的使用文本打印到 stderr:
您可以使用进程替换轻松捕获标准输出:
然而,stderr 跳过了进程替换并打印到控制台:
我想使用进程替换来捕获标准错误。我现在正在使用这个:
但我希望避免临时文件。
bash - 命令替换与进程替换
我试图了解这两个类似命令之间的区别。
- 我知道这
<()
需要#!/bin/bash
,但这会使其变慢吗? - 他们创建相同数量的子壳吗?
- 它们是否需要相同数量
bash
或sh
流程?
我希望使用性能最佳的命令。
multithreading - 将每个线程流连接到单独进程的最佳方法
我有一个计算密集型进程 X,它使用跨多个 CPU 的线程并行化。每个线程产生流输出,并且每个流应该单独连接到它自己的第二个进程 Y 的实例(运行的进程 Y 与线程的数量一样多)。X 和 Y 分别写入和读取二进制格式,因此吞吐量相当不错。我想尽量减少任何 I/O 开销,并且正在寻找最好的方法来做到这一点。目前我的设置看起来像这样(图中只有两个线程,但通常我会有八个以上):
一个问题是 bash 手册指出:“使用大于 9 的文件描述符的重定向应谨慎使用,因为它们可能与 shell 内部使用的文件描述符冲突。” 这并不完全清楚。另一个问题是我还没有找到建立终止的好方法:目前我使用“lsof -c programY”,但这感觉就像一个黑客。有没有更好或改进的解决方案?这里的“给定”是 X 是多线程和计算密集型的,Y 是单线程和计算密集型的,并且 X 的每个线程都必须连接到 Y 的一个实例。
bash - 如何使用 stat 读取超时?
我有以下代码:
如何静音 stat 的输出,同时仍然能够在后续测试中检测到其错误级别?
在子外壳内添加>/dev/null 2>&1
,或在读取行的末尾添加不起作用。但一定有办法...
感谢您对此的任何见解!
node.js - 进程替换 - Node.js child_process
在从标准输出读取修改后的内容之前,我正在尝试运行一个子进程来修改文件(分两步)。我正在尝试通过使用进程替换来做到这一点,该进程替换在 bash 中完美运行,但当我从节点尝试时却不行。
这有点像命令的样子..
标准错误打印:
在节点中执行此操作的正确方法是什么?
bash - 重定向 bash while 循环中的可变损失
我有以下代码
我想将增加的值打印到 bwacct.txt,但文件中充满了零:
我对 Bash 的理解是重定向的 for 循环应该保留变量。我究竟做错了什么?
bash - 这里的字符串:这里发生了什么?
我对 shell 脚本相对较新,但对编程不熟悉,尽管我承认有一段时间不玩这个游戏了。
在试图了解 Bash 脚本中的错误时,我提出了三个简短的示例,说明我使用进程替换和“这里的字符串”为while
循环提供 STDIN,以避免 subshell 问题。
我对find
输出进行空分隔以避免与不寻常的文件名字符相关的潜在问题。
此示例效果很好,并输出根目录下所有文件夹的名称:
这个例子也很好用:
但是在这种情况下,我将find
输出存储在字符串中x
并尝试将其用作“此处字符串”的源,但什么也不输出:
我在这里缺少什么微妙之处(或我的密集度)?
我正在使用 GNU bash 4.1.7(2)-release。
bash - When tee command redirect to subshell, the last two lines missing
I have below solution to record a command and its output executed on a remote machine:
clilogging.sh
will record each command and its output into a log file.
However, sometimes the last exited command and its output message "logout" is not written into the log file.
clilogging.sh
is as follows:
Could anybody help me? Thanks a lot!