linux ubuntu 进程间通信 有名管道 open错误:permission denied

hui_xiaolang 2013-06-13 06:35:33
int main(int argc,char** argv)
{
int fd;
char w_buf[100];
int nwrite;

/*创建有名管道*/
if((mkfifo(FIFO_SERVER,O_CREAT|O_EXCL|O_RDWR)<0)&&(errno!=EEXIST))
{
printf("cannot create fifoserver\n");
}

/*打开管道*/
fd=open(FIFO_SERVER,O_WRONLY |O_NONBLOCK,0);
if(fd==-1)
{
perror("open");
exit(1);
}
//......
...全文
832 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bewinged 2013-06-13
  • 打赏
  • 举报
回复
楼上说的是
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

#define BUFSIZE 40

int main(int argc,char **argv)
{
    int fd,n;
    char buf[BUFSIZE];
    if(argc  != 2)
    {
        printf("Usage:%s [pathname]\n",argv[0]);
        exit(1);
    }

    if(mkfifo(argv[1],0644) < 0)
    {
        perror("mkfifo");
        exit(1);
    }

    if( (fd = open(argv[1],O_WRONLY)) < 0)
    {
        perror("open");
        exit(1);

    }
    n = sprintf(buf,"%s from %d","hello",getpid());
    write(fd,buf,n+1);

    close(fd);

    return 0;
}
qq120848369 2013-06-13
  • 打赏
  • 举报
回复
mkfifo第二个参数是权限, 不是打开方式.
bewinged 2013-06-13
  • 打赏
  • 举报
回复
fd=open(FIFO_SERVER,O_WRONLY); 改成这样
zhxianbin 2013-06-13
  • 打赏
  • 举报
回复
没有权限!!!
hui_xiaolang 2013-06-13
  • 打赏
  • 举报
回复
请问这个要怎么解决?本人是在学习进程间通信时用的有名通道的方式。

2,161

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 UNIX文化
社区管理员
  • UNIX文化社区
  • 文天大人
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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