親プロセス「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() でブロックし、「コマンドが見つかりません!!」画面に継続的に印刷されていますか?この問題を解決するのを手伝ってください。
ありがとう。