Saya perlu bantuan menutup pipa bernama. Saya membuat fifo bernama via mkfifo myfifo
, kemudian beberapa file yang dapat dieksekusi C ++ menulis / membaca dari myfifo
, dan sekarang saya ingin menutupnya (jadi saya bisa cat
isinya untuk membacanya).
Namun, saya membaca man mkfifo
halaman, dan juga googled sekitar, tetapi saya tidak dapat menemukan perintah khusus untuk menutup fifo (bahkan setelah semua executable selesai menggunakannya).
Perintah yang terlibat adalah:
$ mkfifo myfifo
$ ./A < myfifo | ./B > myfifo
$ # now i want to read myfifo
(executable A
dan B
berinteraksi satu sama lain melalui myfifo
)
Ini adalah file
// B.cpp
#include <fstream>
#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
using namespace std;
int main()
{
ofstream file("inter.txt");
int in = -1;
if (file.is_open())
{
cin >> in;
cout << (in + 1);
}
else
cout << -1;
file << in;
file.close();
return 0;
}
// A.cpp
#include <fstream>
#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
using namespace std;
#define PIPE "pipe.txt"
#define MAX_BUF 150
int main()
{
ofstream file("inter2.txt");
cout << 1 << endl;
file << 1;
int in;
cin >> in;
cout << 2 * in;
file << 2 * in;
file.close();
return 0;
}
Dalam program di atas, ini seharusnya terjadi: A output 1. B membaca 1 dan output 2. A membaca 2 dan output 4. Kemudian program berakhir.
./A
atau./B
.