[解決済み] パイプを使って2つのプログラム間で簡単な文字列を送信するには?
2022-05-17 12:26:42
質問
ネットで検索してみたのですが、資料がほとんどありません。ちょっとした例で十分です。
EDIT つまり、2つの異なるCプログラムが互いに通信しています。一方のプログラムが"Hi"を送信し、もう一方のプログラムがそれを受信する必要があります。みたいな感じです。
どのように解決するのですか?
通常のパイプは、関連する2つのプロセスのみを接続することができます。 これはプロセスによって作成され、最後のプロセスがそれを閉じると消滅します。
A
名前付きパイプ
は、その動作から FIFO とも呼ばれ、無関係な2つのプロセスを接続するために使用することができ、プロセスから独立して存在することができます。 FIFOは
mkfifo()
ライブラリ関数を使用して作成されます。
使用例
writer.c
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int fd;
char * myfifo = "/tmp/myfifo";
/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);
/* write "Hi" to the FIFO */
fd = open(myfifo, O_WRONLY);
write(fd, "Hi", sizeof("Hi"));
close(fd);
/* remove the FIFO */
unlink(myfifo);
return 0;
}
リーダー.c
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#define MAX_BUF 1024
int main()
{
int fd;
char * myfifo = "/tmp/myfifo";
char buf[MAX_BUF];
/* open, read, and display the message from the FIFO */
fd = open(myfifo, O_RDONLY);
read(fd, buf, MAX_BUF);
printf("Received: %s\n", buf);
close(fd);
return 0;
}
注:上記のコードでは簡略化のため、エラーチェックを省略しています。
関連
-
解決済み] g++ コンパイルエラー: ')'トークンの前に一次式があることが予想される
-
未定義の `__isoc99_sscanf' への参照
-
[解決済み] flexible array member not at end of structエラーの原因は何ですか?
-
[解決済み] c または c++ 用のシンプルな 2 次元クロスプラットフォームグラフィックスライブラリ?[クローズド]
-
[解決済み] char *とchar[]の違い [重複]
-
[解決済み] C言語とC++の両方で有効なコードを、それぞれの言語でコンパイルすると、異なる動作になることがありますか?
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] OS X:Linuxのwgetに相当するもの
-
[解決済み] Bashでsshして複数のコマンドを実行する最もクリーンな方法は何ですか?
-
[解決済み] C言語で "unsigned long "をprintfする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
関数 'malloc' の暗黙の宣言に対する解決策
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
[解決済み] char *とchar[]の違い [重複]
-
[解決済み] C言語で関数型プログラミングを行うためのツールにはどのようなものがありますか?
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] Cコードの単体テスト【終了しました
-
[解決済み] mallocとcallocの違い?
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]