我想以pipe
某种方式使用(POSIX)以使其双向连接。即我可以在两端读写。
那可能吗?
(我不想用 4 个文件描述符创建两个管道。我只想有 2 个文件描述符,我可以在两端读/写。)
基本上,它应该是openpty
万一失败的后备。
管道是严格单向的。但是在 POSIX 环境中,您可能可以访问“socketpair()”调用,当与“AF_UNIX”套接字域一起使用时,它将为您提供一对双向描述符,所有这些描述符都已连接并准备就绪。如果您将分叉和描述符被继承。如果您尝试连接两个单独的预先存在的进程,那么您将需要手动创建套接字并使用套接字调用来连接它们。
我现在基本上有这个代码:
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;
}
}
有点工作,但还不完全正确......