問題タブ [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 - dup2、stdout、および stderr に関する問題
このプログラムを実行すると、「stdout」行の前に「stderr」行が表示されます。なんで?dup2 は stderr と stdout が同じファイル記述子を使用するようにするので、バッファリングに問題はないと思いました。Solaris 10 で gcc 3.4.6 を使用しています。
c++ - ゾンビプロセスとフォーク
私はこのようなコードを持っています...
fd[READ] と fd[WRITE] は、パイプ ファイル記述子です。
連続して実行すると、ps axを使用するとゾンビプロセスが大量に発生します。これを修正する方法は?これは、子プロセスの終了ステータスを待機するために親を使用していないためですか...
c - dup2() と exec()
}
私の sample_a.c コードは次のとおりです。
上記のコードで、私が実際にやりたいことは次のとおりです。1) 子プロセスからの出力をパイプにリダイレクトし、親がパイプから読み取って stdout に出力するようにします。
子プロセスの出力 (「printf」) を stdout からパイプにリダイレクトできますが、execlp の子プロセス xterm の出力をパイプにリダイレクトできません。
誰でもこれを手伝ってもらえますか?
c++ - FROM stderr を別のファイル記述子にリダイレクトする
私のプログラムは、stderr に出力するライブラリ関数を呼び出します。ファイル記述子 #2 へのすべての書き込み呼び出しが代わりに別の場所に送信されるように介入したいと考えています。
これが私の最初の試みです:
ここで、fd は正常に取得されました。open("/foo/bar",O_APPEND|O_CREAT)
この関数が true を返した後std::cerr<<"blah"
、ファイルではなく端末に移動します。
私は何を間違っていますか?
ありがとう。
アップデート
ありがとう、ラーズマン、でも私はまだそこにいない...
これは出力します
stdout に送信され、指定されたファイルは空です。(存在しない場合は正しく作成されます。)
c++ - stdoutとstderrを別のファイル記述子にリダイレクトするdup2
このような電話があります。
その後
dup呼び出しを使用して1と2の両方をfd[WRITE]に複製する方法はありますか?
file - fork() の後に stdout をファイルにリダイレクトする
私は単純なシェルに取り組んでいますが、今はリダイレクトを理解しようとしています。ls コマンドをハードコーディングして、今のところファイルに書き込もうとしています。現在、ls が実行され、出力ファイルが作成されますが、出力は引き続き stdout に送られ、ファイルは空白です。なぜだか混乱しています。前もって感謝します。
これが私のコードです:
c - ファイル記述子への書き込み
次のスニペットでは、ls
コマンドの出力を入力にリダイレクトしていますが、これは完全に機能します。次のコードを使用して、コマンドの出力を「beejoutput.txt」という名前のファイルwc -l
にリダイレクトしたいのですが、機能しません。ls
助けが必要。
c - STDIN_FILENOとSTDOUT_FILENOはcで読み取り専用ですか?
man
私にそれを教えてくれますdup2() makes newfd be the copy of oldfd, closing newfd first if necessary.
:
しかし、読み取り専用ではありませんSTDIN_FILENO
かSTDOUT_FILENO
?
それともdup2
まったく変わらなかっnewfd
たのですか?
linux - (TCP) ソケットで消えるデータ
接続を受け入れ、ユーザー指定のプログラムを実行して反対側と通信する、ほぼプロトタイプの TCP ソケット サーバーを入手しました。不思議なことに、 write() が呼び出されて返されますが、出力はクライアントに届きません。
strace の出力 (実行プログラムとして "cat" を実行) は次のようになります。
一方、クライアント側では何も起こりません:
read/write/close の代わりに send/recv/shutdown を使用する場合のように、execve されたプログラムはソケットをよりソケットのように扱うべきだと信じる準備ができていますが、これまでに見たドキュメントはclose() は設計どおりに機能し、シャットダウンは接続を半分閉じる場合にのみ必要であることを示唆しています。Unix Sockets FAQ では、未送信のデータは SO_LINGER オプションを設定せずに閉じるときにフラッシュする必要があると述べており、Linux の man ページ socket(7) では、「ソケットが exit(2) の一部として閉じられると、常にバックグラウンドで残る」と主張しています。 . " 十分な出力を与えると、最初の部分がクライアントに送信されます。
完全を期すために、ここにプログラムがあります...
c - C の複数のパイプ
Cにマルチパイプを実装したいので、次のようなことができます|||
.stdinをNパイプコマンドに複製することを意味します):
cat /tmp/test.log ||| wc -l ||| grep test1 ||| grep test2 | grep test3
これにより、ファイル内の行数と、「test1」文字列を含むファイル内の行と、「test2」&&「test3」文字列を含むファイル内の行が返されます
つまり、これは次の 3 つの通常のパイプラインの効果があります。
誰かがすでにこのようなものを実装していますか? 何も見つかりませんでした... 注:スクリプト言語またはbashの複数のファイル記述子で実行できることは知っていますが、Cコードを検索しています。
ありがとう!