問題タブ [dup2]
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 - dup および dup2 コマンド
私がやろうとしているのは、lsコマンドの出力をファイルに入れ、grepコマンドを使用してそのファイルから読み取り、新しいファイルに保存し、そのファイルの内容に基づいて何かを出力することですターミナル。
したがって、次の出力リダイレクトがあります。
1) 標準出力から oioioi.txt というファイルへ (ls コマンドの場合)
2) oioioi.txt から grep.txt へ (grep コマンドの場合)
3) grep.txt からターミナルに戻る
これが私のコードです:
3番目は間違っていると思います。ただし、最初の 2 つについてもよくわかりません。皆さんが私のコードを見て、どこが間違っているかを教えてくれたり、次のリダイレクトに dup を使用した例を教えてくれたりしたら、本当に感謝しています.
c - パイプの使用中にエラーが発生し、exec.Second コマンドが終了しません
コードはコマンドを入力として受け取り、それを実行します。パイプも扱っています。問題は、ls | と入力すると仮定することです。コマンドとして grep x を実行します。プロセス grep は終了しないため、プログラムは停止します。何か案は。
c - 宿題用のシェル作り
さて、これは私のシェルのコードです。実行すると、 ls を入力すると、正しい出力が得られます。次に、 ls -l を入力してから ls を再度入力すると、 ls: cannot access : No such file or directory また、cd を使用すると、ls は出力を与えず、pwd は「未使用の引数を無視します」と言うので、cat は機能しません。mkdir、ps、および ls -l は機能しますが。
fork - パイプのエミュレート
最近パイプについて学びました。「|」をエミュレートしたいと思います。シェルによって提供されるギミック。
以下のコードでは、親プロセスが2つの子プロセスを生成し、その後、それらはパイピングを実行し、lsとgrepに置き換えられます。それが発生している間、親プロセスは辛抱強く待機します。問題は、子プロセスがパイプを介して画面にデータを送信することに成功したにもかかわらず、子プロセスが終了しないことです。
SOのパイプに関する投稿は他にもありますが、親プロセスが2つの子を起動するセットアップは見たことがありません。親が1人の子供と通信しているのを見ただけです。
私の質問は次のとおりです。子プロセスが終了しないのはなぜですか?フォークパイプ構造は健全ですか、それとも完全に間違っていますか?
system - dup2 システムコールを 2 回使用しますか?
以下のコードで
2 つの dup2 呼び出しがあります。最初のものは、o/p を stdout から自分のファイルにリダイレクトします。これはうまくいきます。次に、それをリダイレクトして再びスタウドに戻したいのですが、2番目のdup2はそれを変更せず、「私はSTDOUTにいます!」ファイルに印刷されます。私のコードの何が問題なのですか?
c - pipe/dup2 を使用して Python サブプロセスと通信する
Python を使用して C プログラムのユーザー インターフェイスを実装したいと考えています。しかし、通信が機能していないようです。これまでに行ったことは次のtest.c
とおりです。
そしてinterface.py
次のとおりです。
これを実行すると、印刷されると思っていましたが、
しかし、代わりに、単にハングアップし、
c++ - 実行して標準入力に書き込み、標準出力をソケットにパイプするにはどうすればよいですか?
学校のプロジェクト用に http サーバーを作成していて、CGI スクリプトを実行しようとしています。次のコードは cgi プログラムを正常に実行し、プログラムの出力はブラウザーに送信されますが、POST されたデータの送信方法に問題があります。これが私が持っているものです:
CGI を正しく理解していれば、HTTP_CONTENT_LENGTH 環境変数を設定し (これを行っています)、要求本文を stdin に送信するだけです。私はパイプ、dup2 を使用しており、それを行う正しい方法を書いていますか?
テスト PHP スクリプトに投稿すると、$_POST 配列が空になります。テスト用の perl スクリプトに投稿すると、まったく応答が送信されなかったり、実行が終了したりしません。もっとstdinを待っていると思います。私のパイピングと dup2ing に明らかな問題がなければ、問題を説明するコンパイル可能なテスト コードを投稿します。
ありがとうございました!
c - Cで、dup2を使用してSTDOUT_FILENOを/ dev / nullにリダイレクトし、後で元の値にリダイレクトするにはどうすればよいですか?
作業中の課題があり、それを完了するのに苦労しています。アイデアは、1つのプログラムを実行するプログラムif.cを作成し、それが成功した場合は2番目のプログラムを実行することです。最初のプログラムの標準出力を抑制し、2番目のプログラムの標準出力を抑制解除することになっています。複数のテストでエラーメッセージが表示されます。たとえば、「。/ if echo no then echo yes」は、「echo:write error:Badfiledescriptor」を返します。私は自分が間違っていることをオンラインで見つけようとしましたが、運がありません。
これが私のコードです:
c - stdout をソケットにリダイレクトする
stdout をソケットにリダイレクトしようとしています。私はこのようなことをします:
その後stdio
、stdout に書き込むすべての関数が失敗します。私はこの方法でstdoutを再開しようとしました:
しかしprintf
、他の機能はまだ機能しません。
編集:
そもそも問題を誤解していたことを恐れています。さらにデバッグした後、これが実際の問題であることがわかりました。
ありがとう。
c++ - dup2( ) により子プロセスが早期に終了する
だから私は、親プロセスが子プロセスに書き込み、子プロセスがすぐに戻ることができるように、2セットのパイプの作成を含むプログラムを書いています...
子プロセスに次のコードがあります。
プログラムを実行すると、子プロセスからの出力として得られるのはexecuting child
no だけtest output
です。ただし、dup2 呼び出しを処理する if ステートメントを削除すると、出力にtest output
.
dup2 が原因で子プロセスが終了しない理由についてのアイデアはありますか?
(ちなみに、もともと、私の 2 つの dup2 は別々の if ステートメントで行われていました...テスト出力をテストの下に置くdup2(fd1[READ_END],STDIN_FILENO) < 0
と出力されますが、他の dup2 条件付きテストの下に置くと出力されないので、それが私の問題であると確信しています)
前もって感謝します