0
process1.cpp:最初は、私ははmkfifo()を使用してmyfifo名前付きパイプファイルを作成し パイプファイルを削除した後、通信がまだ機能するのはなぜですか?
fd = open(myfifo, O_WRONLY);
unlink(myfifo);
write(fd, &write_int, sizeof(write_int));
、その後、
myfifoの記述を与えた:process2.cpp const char* myfifo = "./myfifo";
mkfifo(myfifo,0666);
fd = open(myfifo, O_RDONLY);
wait(0);
read(fd, &sum, 4);
をprocess1とprocess2に変更してから、
unlink()を使用して
myfifoを削除してください。 プログラム全体が動作しますが、削除後に2つのプロセスを読み書きできるのは変です。
myfifo誰でもその理由を知っていますか?場合だけ、あなた
unlink()
ファイルは、ファイルが実際にファイルシステムから削除され
[documentation](https://linux.die.net/man/2/unlink)から:*名前がソケット、fifoまたはデバイスを参照した場合、その名前は削除されますが、開いているオブジェクトが引き続き使用する可能性があります。* – UnholySheep