pipe
(POSIX)を双方向に接続する方法で使用したいと思います。つまり、両端で読み書きできます。
それは可能ですか?
(4つのファイル記述子を持つ2つのパイプを作成したくありません。両端で読み取り/書き込みができるファイル記述子を2つだけにしたいのです。)
基本的に、それが失敗した場合のフォールバックである必要がありopenpty
ます。
パイプは厳密に一方向です。ただし、POSIX環境では、「socketpair()」呼び出しにアクセスできる場合があります。これを「AF_UNIX」ソケットドメインとともに使用すると、すべてが接続されてすぐに使用できる双方向記述子のペアが提供されます。記述子は継承されます。2つの別個の既存のプロセスを接続しようとしている場合は、ソケットを手動で作成し、ソケット呼び出しを使用してそれらを接続する必要があります。
私は基本的に今このコードを持っています:
int fildes[2] = {-1,-1};
int ret = openpty(&fildes[0], &fildes[1], ttyname, &term, &win);
if(ret != 0) {
fprintf(stderr, "openpty failed: %s\n", strerror(errno));
ret = socketpair(AF_UNIX, SOCK_STREAM, 0, fildes);
if(ret != 0) {
fprintf(stderr, "socketpair failed: %s\n", strerror(errno));
return;
}
}
多少は機能しますが、まだ完全には機能していません...