問題タブ [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」です)が、2番目のものは言う
どうしてこれなの?tr はパイプを介して「abcd」を受け取るだけで、「/dev/fd/63」も受け取りませんか?
bash - プロセス置換キャプチャstderr
この質問ではgrep
、使用法のテキストがstderrに出力されるため、を使用します。
プロセス置換を使用すると、stdoutを簡単にキャプチャできます。
ただし、stderrはプロセス置換をすり抜けて、コンソールに出力します。
プロセス置換を使用してstderrをキャプチャしたいと思います。私は今これを使用しています:
しかし、私は一時ファイルを避けたいと思っています。
bash - コマンド置換とプロセス置換
これら 2 つの類似したコマンドの違いを理解しようとしています。
<()
が必要なのはわかっていますが#!/bin/bash
、それによって遅くなりますか?- それらは同じ量のサブシェルを作成しますか?
- 同じ量
bash
またはsh
プロセスが必要ですか?
最高のパフォーマンスでコマンドを使用したいと考えています。
multithreading - スレッドごとのストリームを個別のプロセスに接続する最良の方法
複数の CPU にまたがるスレッドを使用して並列化された単一の計算集約型プロセス X があります。各スレッドはストリーム出力を生成し、各ストリームは 2 番目のプロセス Y の独自のインスタンスに個別に接続する必要があります (スレッドと同じ数のプロセス Y が実行されます)。X と Y はそれぞれバイナリ形式の書き込みと読み取りを行うため、スループットは非常に良好です。I/O オーバーヘッドを最小限に抑えたいと考えており、そのための最善の方法を探しています。現時点で、私のセットアップは次のようになっています (2 つのスレッドのみで示されていますが、通常は 8 つ以上のスレッドがあります)。
問題の 1 つは、bash のマニュアルに次のように記載されていることです。これは正確には明らかではありません。もう 1 つの問題は、終了を確立する良い方法が見つからないことです。現在、「lsof -c programY」を使用していますが、ハックのように感じます。より良い、または改善された解決策はありますか? ここで「与えられている」のは、X はマルチスレッドで計算量が多く、Y はシングルスレッドで計算量が多く、X の各スレッドは Y のインスタンスに接続する必要があるということです。
node.js - プロセス置換 - Node.js child_process
stdout から変更されたコンテンツを読み取る前に、子プロセスを実行してファイルを (2 つのステップで) 変更しようとしています。私はbashで完全に機能するプロセス置換を使用してこれを実行しようとしていますが、ノードから試した場合は機能しません。
これは、コマンドがどのように見えるかのようなものです..
stderr 出力:
ノードでこれを行う適切な方法は何ですか?
bash - リダイレクトされた bash while ループの可変損失
次のコードがあります
インクリメントされた値を bwacct.txt に出力したいのですが、代わりにファイルはゼロでいっぱいです:
Bash についての私の理解では、リダイレクトされた for ループは変数を保持する必要があります。私は何を間違っていますか?
bash - Here Strings: ここで何が起こっているのですか?
私はシェル スクリプトに関しては比較的初心者ですが、プログラミングに関してはそうではありません。
while
Bashスクリプトのバグの真相を突き止めようとして、サブシェルの問題を回避するために、プロセス置換と「here文字列」をループに供給するSTDINの使用の3つの短い例を思いつきました。
find
異常なファイル名文字との潜在的な闘争を避けるために、出力をヌル区切りにしています。
この例はうまく機能し、ルートにあるすべてのフォルダーの名前を出力します。
この例もうまく機能します:
しかし、この場合、find
出力を文字列に保存し、x
それを「ここの文字列」のソースとして使用しようとすると、何も出力されません。
ここで見逃している繊細さ (または私の部分の密度) は何ですか?
GNU bash 4.1.7(2) リリースを使用しています。
bash - tee コマンドがサブシェルにリダイレクトされると、最後の 2 行が欠落している
リモートマシンで実行されたコマンドとその出力を記録するソリューションを以下に示します。
clilogging.sh
各コマンドとその出力をログ ファイルに記録します。
ただし、最後に終了したコマンドとその出力メッセージ「logout」がログ ファイルに書き込まれないことがあります。
clilogging.sh
以下のとおりであります:
誰でも私を助けることができますか?どうもありがとう!