我想以某种方式使用(POSIX) pipe,让它以两种方式连接起来。也就是说,我两端都能读和写。
这有可能吗?
(我不想创建具有4个文件描述符的两个管道。我希望只有2个文件描述符,我可以在两端进行读/写。)
基本上,它应该是openpty的后备,以防失败。
发布于 2011-09-06 10:33:13
管道是严格单向的。但是在POSIX环境中,你可能会访问“socketpair()”调用,当它与“AF_UNIX”套接字域名一起使用时,会给你一对双向的描述符,所有这些描述符都是连接在一起的,可以随时使用。如果你要派生并继承描述符,这很方便。如果你试图连接两个独立的预先存在的进程,那么你需要手动创建套接字,并使用套接字调用来连接它们。
发布于 2011-09-06 10:33:34
我现在基本上有了这个代码:
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;
}
}有点用,但还不是很正确...
https://stackoverflow.com/questions/7314316
复制相似问题