3

私は Unix プログラミングのまったくの初心者です。標準入力からいくつかのコマンドを読み取り、それらのコマンドを実行する別のプログラムを作成する必要がありました。これら 2 つのプログラム間の通信を確立するには、fifo を使用する必要があります。私の問題は、行のサイズが固定されていない fifo から行ごとに (1 つのコマンドで) 読み取ることができるようにするにはどうすればよいかということです。ある種の同期をシグナルで実装することを考えていましたが、もっと良い方法があると確信しています。

平凡な質問で申し訳ありませんが、私はこのことに関して完全な初心者です。

ああ、私の英語が下手ならごめんなさい。

4

1 に答える 1

3

私はあなたが読んでいたと思いますread()か?fgets()stdlib を使用してバッファリングを処理するだけです。open()代わりに使用した場合は、最初fopen()に FILE 構造を取得しますfdopen()。何かのようなもの:

FILE * pFile;

char mystring [100];

pFile = fopen("myfifo" , "r");

if (pFile == NULL)
{   perror ("Error opening fifo");
    exit(1);
}

while (fgets(mystring, 100, pFile) != NULL)
    puts(mystring);

fclose (pFile);
于 2012-07-14T23:19:19.713 に答える