C プログラムには、文字で表されるいくつかのオプションから選択できるメニューがあります。プロセスをフォークして関数を実行するオプションがあります (バックグラウンドで実行されると言えます)。いくつかの条件下でバックグラウンドで実行されるこの関数は、ユーザーにデータの入力を求めることができます。
私の問題は、メイン プロセスがデータ (またはオプション) を要求し、子プロセスもデータを要求している場合、データを適切に送信できないことです。
これに対処する方法について何か考えはありますか?
コードの構造を少し追加します (約 600 行のコードがあるため、すべてを投稿することはできません)。
int main(int argc, char *argv[])
{
// Some initialization here
while(1)
{
scanf("\n%c", &opt);
switch(opt)
{
// Some options here
case 'r':
send_command(PM_RUN, fiforfd, fifowfd, pid);
break;
// Some more options here
}
}
}
void send_command(unsigned char command, int fiforfd, int fifowfd, int pid)
{
// Some operations here
if(command == PM_RUN)
{
time = microtime();
childpid = fork();
if(childpid == -1)
{
// Error here
}
else if(childpid == 0)
{
// Here is the child
// Some operations and conditions here
// In some condition, appears this (expected a short in hexadecimal)
for(i = 0; i < 7; ++i)
scanf("%hx\n",&data[i]));
// More operations
exit(0);
}
}
}