私はCygwinを使用しています -いいえ、まだ閉じていません。-<()
文法に問題があります。プログラムは私が渡したファイル記述子を受け入れることを拒否しますが、他のプログラムではそれをまともに受け入れます。私のもの仮説プログラムがファイル記述子をヘルパーの1つに渡してから、プログラムがパイプを受け取らないということです(通常の、および、ここで、およびはオフになる可能性0
が1
あり2
ます0
)2
。これは機能しますcat
が、このプログラムでは機能しません。
MCVE:
./jpegtran -copy all -drop +16+16 <(echo "JPEG FILE") -outfile out.jpeg out.jpeg
これによりエラーメッセージが生成されます。
C:\path\to\jpegtran.exe: can't open /dev/fd/63 for reading
これを行う方法はありますか?それとも頼らなければなりません...一時ファイル?*戦率*
私が知る限り、Cygwinはすべての意図と目的のためにPOSIX環境をエミュレートします。名前付きパイプを使用してダミーファイルを生成できない場合(Windows APIを使用して実行できることを認識しています。)Windowsプログラムにパスを渡すときに、現在使用されている名前の書き換えを//./pipe/pipename
使用してそれを処理できる必要があります。/cygdrive/c/
)実際の「nix box」に適用したいという回答が満足です。
答え1
注:多くの問題の最後に、OPはjpegtran
「切り取りと配置」(ある画像の一部を別の画像にコピー)をサポートする非標準バージョンを使用していることが確認されました。
それでは、代替プロセス(PSとも呼ばれる)ではなぜこの機能を使用しませんか?コードを見なくても100%確信を持って絶対に言うことはできませんが、可能性が非常に高い説明があります。 PSは実際にデータへのストリーミングアクセスを可能にする読み取り専用パイプである特別なファイルを生成します。これを使用すると、もちろんファイルに書き込むことはできません。あなたはその中にそれを見つけることができません(ランダムアクセス).フローモデルを使用しないツールとしてPSを試してみてください(vimは一例です)。できることが限られているか、まったく機能しません。
この機能がjpegtran
ソースイメージ(JPEG)の長方形のサブセットを抽出することを考えると、それを実装した人が一方向ストリームへのアクセスを制限するために独自の制限を加えた可能性はほとんどありません。画像の一部を取り出すことは明らかに検索操作であり、必須ではありませんが非常に便利です。したがって、PSは許可されません。