最近、私は私たちのグループが非常に定期的に使用するアプリケーションの1つをカスタマイズすることを任されました。アプリケーションはCで書かれていますが、これは私があまり経験したことのないものです。私がやろうとしていることの機能的な例をいくつか見つけましたが、現時点ではテストベッドに完全に統合できていません。
要件は非常に単純です。名前付きパイプを開き、データをプッシュして、別のグループがパイプを読み取ってそれを使って何かを実行できるようにします。これは、サーバーがその処理を中断しないようにする必要があります。
私のアプリケーションには、履歴と呼ばれる配列があり、必要なすべての値が含まれています。私はこれまで、これを達成しようとした試みとさまざまな結果を出してきました。以下のコードスニペットをご覧ください。
DCmass_add_history(history, history_num);
int fd;
char * myfifo = "/tmp/fooPipe";
/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);
/* open FIFO (named pipe) */
fd = open(myfifo, O_WRONLY);
for (i = 0; i < history_num; i++) {
/* Write our data to our FIFO (named pipe) */
fprintf(fd, "%d %d %f %f", history[i].id, history[i].clock, history[i].value, history[i].ns);
}
close(fd);
write
以前は、の代わりにを使用したときにある程度の成功を収めましたfprintf
が、パイプに変数を取得できませんでした。
前のスタックオーバーフローの例、スタックオーバーフローの例から、パイプをテストするための基本的なリーダーと、パイプを開くための上記の基本的なコードを取得することができました。