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