首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSIX‘pipe`双向

POSIX‘pipe`双向
EN

Stack Overflow用户
提问于 2011-09-06 10:16:13
回答 2查看 293关注 0票数 1

我想以某种方式使用(POSIX) pipe,让它以两种方式连接起来。也就是说,我两端都能读和写。

这有可能吗?

(我不想创建具有4个文件描述符的两个管道。我希望只有2个文件描述符,我可以在两端进行读/写。)

基本上,它应该是openpty的后备,以防失败。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-06 10:33:13

管道是严格单向的。但是在POSIX环境中,你可能会访问“socketpair()”调用,当它与“AF_UNIX”套接字域名一起使用时,会给你一对双向的描述符,所有这些描述符都是连接在一起的,可以随时使用。如果你要派生并继承描述符,这很方便。如果你试图连接两个独立的预先存在的进程,那么你需要手动创建套接字,并使用套接字调用来连接它们。

票数 2
EN

Stack Overflow用户

发布于 2011-09-06 10:33:34

我现在基本上有了这个代码:

代码语言:javascript
复制
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;
    }
}

有点用,但还不是很正确...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7314316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档