0

親プロセス「A」と子プロセス「B」があります。子プロセスはコンソール プロセスのように動作し、次のように実装されます。

#include<iostream>
#include<cstdio>

    int main()
    {
        char inputCommand[50];
        while(1)
        {
            cout<<"CONSOLE>";
            cout.flush();
            strcpy(inputCommand,"");    
            __fpurge(stdin);
            scanf(" %s",inputCommand);
            return 0;
            // here I have an array of commands
            // next i am comparing the input command with the array and getting a number
            // next i am having a swith statement which do some action according to the 
            // input command. 
            // default case is :: no command found!! 

        }
    }

通常の状態では、このアプリケーションは正常に動作しています。しかし、tcsetpgrp() を使用してプロセス 'B' をアクティブ プロセスとして設定するか、& を使用してバックグラウンドでプロセス 'A' を実行し、シグナルを 'A' ではなくプロセス 'B' にリダイレクトする場合、プロセス 'B' はそうではありません。 scanf() でブロックし、「コマンドが見つかりません!!」画面に継続的に印刷されていますか?この問題を解決するのを手伝ってください。

ありがとう。

4

0 に答える 0