waitpid

    0

    1答えて

    フォークシステムコールを使用してプロセスを作成し、子プロセスを待機させようとしています。私は以下を使用しました: waitpid(pid、&ステータス、0); 1)最初の問題は、ステータスが8ビット左にシフトされているなどです。たとえば、子プロセスが1を返した場合、waitpid関数はステータス変数のステータス値を256に戻します。なぜそれをやっているのですか? 2)マニュアルに従って、waitp

    0

    1答えて

    (私はシンプルexpect様のプログラムを開発しています。) たとえばは私がfork()とexec()別のプログラムprog2プログラムprog1.cを持っています。 prog2がシグナル(例えば、SIGPIPE)によって殺された場合、prog1は、waitpid(),WIFSIGNALED()およびWTERMSIG()でその終了状態を得ることができる。その後、prog1はprog1の呼び出し元(

    -2

    2答えて

    fork()とexec()を使って、C++でシェルを実装しようとしています。次のように私のコードは次のとおりです。 #include <iostream> #include <string> #include <unistd.h> #include <sstream> #include <vector> using namespace std; int main(int argc,

    0

    1答えて

    あなたは私が印刷されているものであることを連続可変出力(0.50)を必要と現時点で waitpid() のパラメータを変更することができる場合、私は思ったんだけど。しかし、waitpid()は、私が試してみると整数を受け入れるので、それは私に0を与えます。これを修正する方法や、これが問題であったとしても。 計算は、(1+(2 * 3)/(2 * 7))= 0.5 #include <stdio.h

    2

    1答えて

    になる私は、次のコードで同時に100個のプロセスを起動しよう:私はsig_handlerでSIGCHLD信号をキャッチ int cnt = 0; void sig_handler(int signo) { pid_t pid; int stat; pid = wait(&stat); cout << "cnt:" << ++cnt << ", pid:"

    0

    1答えて

    終了し、親プロセスがwaitpid()を呼び出さないときにプロセスがゾンビにならないようにするLinuxまたはPOSIXメソッドがありますか? 私は、親プロセスが、我々はSIGCHLDハンドラのSA_NOCLDSTOPを使用することができることを知っているが、親がビジー状態であるとSIGCHLDは、他のもののために使用されているので、それが私の場合はオプションではありません。 終了コードに興味がな

    2

    1答えて

    Basicaly、Cシェルを書いイムを送信する場合にのみ、私のパイプが終わるのはなぜ.. イム: > ls | cat -e | wc | wc -l > 1 しかし、私は問題を抱えていますより遅い/長い実行をパイプしようとしています。 実際 、私はパイプに '猫の/ dev/urandomの' の結果をしようとすると、それはbasicly待つ... > cat /dev/urandom |

    0

    1答えて

    私のプログラムは次のように表現しています。子供が分裂する親があり、この子は別の子を分けています。したがって、親、子、および子孫がある(すなわち、この子孫の親は子である)。 子供はexeclp()でコマンドを実行します。子供が日付を単純にするとしましょう。サブチャイルドは同じことをします。 もちろん、子はコマンドを実行する前にサブファイルをフォークします。 子供が独自のコマンドを実行した後に、コマン

    2

    1答えて

    私は大学の作業のために端末で作業していますが、完成した子どもを探すときに問題があります。 私はバックグラウンドプロセスを保存するリストを持っていますが、これはうまく動作しますが、フォアグラウンドに持ってきたら、SIGINTシグナルをCtrl + Cで送信します。waitpidは、私は殺します。それが私のコードです。私のエラーはwaitpidであると確信していますが、なぜ間違った値を返すのか分かりま

    0

    1答えて

    私は大学のためのminishellプロジェクトを行っています。私はバックグラウンドでコマンドを実行する方法がわかりません。私が知っていることは、私はwaitpid()とsigaction()を使わなければならないということです。もし誰かが私にこれを手渡すなら、私は感謝しています。ここで私が使用しているミニコードコマンドを利用するためのコードの一部です。 void execute_command_l