c语言建立多个有名管道,命名管道一个非常经典的题目

#include /*特别注意写管道时,设置打开管道文件的格式必须为可写*/

#define FIFO_SERVER "myfifo"

#define OPENMODE (O_WRONLY | O_NONBLOCK)

int main(int argc, char **argv)

{

int fd;

int nwrite;

/*打开管道文件,可写非阻塞*/

if ((fd = open(FIFO_SERVER, OPENMODE)) < 0) {

perror("open");

exit(1);

}

/*如果没有在命令行中写入参数,那么要重新运行程序*/

if (argc == 1) {

printf("Please send something\n");

exit(1);

}

/*向管道文件中写入数据,在这里要用strlen,如果用sizeof,则只是4个字节的指针长度*/

if ((nwrite = writefd, argv[1], strlen(argv[1]))) < 0) {

if (errno == EAGAIN) {

printf("The FIFO has not been read yet.Please try  later\n");

}

}

else {

printf("write %s to FIFO\n", argv[1]);

}

return 0;

}

/*命令管道最大的优势是可以跨进程操作,本题命令管道的名字是myfifo,放在在当前目录下,也可以放到其他目录,这样其他进程通过这个名字像普通文件一样进行操作。我们也可以手工向此命名管道写入,echo "www" > myfifo,同样在读端也可以收到消息。注意一个地方;管道先要打开读端,否则写端会被阻塞。*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值