Process 无权访问由mkfifo创建的文件
当使用FIFO在不同进程之间传输信息时,我发现mkfifo创建的文件不能被进程访问。我不知道如何更改我的程序。请帮助:(Process 无权访问由mkfifo创建的文件,process,pipe,file-permissions,fifo,mkfifo,Process,Pipe,File Permissions,Fifo,Mkfifo,当使用FIFO在不同进程之间传输信息时,我发现mkfifo创建的文件不能被进程访问。我不知道如何更改我的程序。请帮助:( 如果阅读手册页,您会知道O_create是mkfifo()的无效参数。: mkfifo()生成一个名为pathname的FIFO特殊文件。mode指定FIFO的权限。它由进程的umask以通常的方式修改:所创建文件的权限为(mode&~umask) 权限位标志在中定义,可以通过阅读stat(2)的手册页在系统中查阅。以下是相关列表: S_IRUSR 00400
如果阅读手册页,您会知道
O_create
是mkfifo()的无效参数。
:
mkfifo()生成一个名为pathname的FIFO特殊文件。mode指定FIFO的权限。它由进程的umask以通常的方式修改:所创建文件的权限为(mode&~umask)
权限位标志在
中定义,可以通过阅读stat(2)
的手册页在系统中查阅。以下是相关列表:
S_IRUSR 00400 owner has read permission
S_IWUSR 00200 owner has write permission
S_IXUSR 00100 owner has execute permission
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permission
S_IXOTH 00001 others have execute permission
因此,通过将正确的权限标志传递给mkfifo()
,可以解决您的问题。如果您想要rw rw
,则可以执行以下操作:
mkfifo("signal", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
S_IRUSR 00400 owner has read permission
S_IWUSR 00200 owner has write permission
S_IXUSR 00100 owner has execute permission
S_IRGRP 00040 group has read permission
S_IWGRP 00020 group has write permission
S_IXGRP 00010 group has execute permission
S_IROTH 00004 others have read permission
S_IWOTH 00002 others have write permission
S_IXOTH 00001 others have execute permission
mkfifo("signal", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);