关于管道的问题

wwll123 2015-07-17 01:33:00
想使用有名管道实现这样的功能:
管道的一端写入,多端读出,以此来完成一个进程与多个进程之间的通信

请问能用一个管道实现吗?管道能不能是1(write)对多(read)的形式呢?

谢谢。
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-07-17
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <string.h>
FILE *f;
int c;
void main(int argc,char **argv) {
    if (argc==3) {
        if (stricmp(argv[1],"-a")) goto USAGE;
        f=fopen(argv[2],"a");
        if (NULL==f) goto FNULL;
        goto FOK;
    } else if (argc==2) {
        if (0==strcmp(argv[1],"/?")) {
        USAGE:
            fprintf(stderr,"Usage: program | tee [-a] file\n");
            return;
        }
        f=fopen(argv[1],"w");
        if (NULL==f) goto FNULL;
    FOK:
        while (1) {
            c=getchar();
            if (EOF==c) break;
            if (EOF==fputc(c,f)) {
                putchar(c);
                break;
            } else {
                if (EOF==putchar(c)) break;
            }
        }
        fclose(f);
    } else {
    FNULL:
        while (1) {
            c=getchar();
            if (EOF==c) break;
            if (EOF==putchar(c)) break;
        }
    }
}
Qlaiaqu 2015-07-17
  • 打赏
  • 举报
回复
不能实现,同台机器用共享内存,不同机器用socket
LubinLew 2015-07-17
  • 打赏
  • 举报
回复
1端写多端读 用共享内存
wwll123 2015-07-17
  • 打赏
  • 举报
回复
引用 1 楼 zqlclj 的回复:
不能,管道是1对1的,可以用多个管道实现
是不是也可以多对一啊,多端写入,一端读出?
zqlclj 2015-07-17
  • 打赏
  • 举报
回复
不能,管道是1对1的,可以用多个管道实现

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧