首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c程序中使用Ubuntu上的mknod

在c程序中使用Ubuntu上的mknod
EN

Stack Overflow用户
提问于 2011-02-27 23:54:46
回答 3查看 11.2K关注 0票数 3

我正在尝试编写一个c程序,其中我使用了mknod命令,例如

代码语言:javascript
复制
#include<stdio.h>
#include<fcntl.h>
#include<string.h>

char info[50];

main() {
    int fdr;
    int rc = mknod("testfile",'b',0);
    if(rc<0) {
        perror("Error in mnod");
    }
    fdr=open("testfile",O_RDONLY);
    read(fdr,info,50);
    printf("\n Received message=%s",info);
    printf("\n");
} 

做些事情。它在Red Hat系统上运行良好,但在ubuntu上失败,并给出无效参数的错误。

EN

回答 3

Stack Overflow用户

发布于 2011-02-28 00:41:51

mknod已弃用;您不应使用它。如果要创建先进先出,请使用标准mkfifo。如果你想创建一个普通的文件,使用creat或者带有O_CREATopen。是的,mknod可以创建设备节点,在一些系统上可能仍然是这样做的,但在现代的Linux系统上,您需要依靠内核和/或udevd来处理这一点。

票数 3
EN

Stack Overflow用户

发布于 2011-02-28 00:00:20

testfile mknod(“

”,'b',0);

在这里,'b'并不是一个非常明智的理由。mknod的参数应该是权限掩码(由umask修改)和S_IFREG (对于常规文件)或S_IFIFO (对于先进先出)的逐位OR。例如:

mknod("textfile",S_IFREG | 0666,0);

票数 2
EN

Stack Overflow用户

发布于 2016-06-27 12:04:28

您可以使用mknode函数创建命名的PIPI,但也可以使用它来创建dev文件,因此您必须指定要使用用户权限创建哪个文件,并且dev类型为零

语法:

代码语言:javascript
复制
mknode (const char* fileName, mode_t mode | S_IFIFO, (dev_t) 0)        

例如:

代码语言:javascript
复制
  mknode("pipe1",0777 | S_IFIFO, (dev_t) 0)

您还可以使用mkfifo来创建它的管道指定的文件,因为不需要指定您想要创建的文件类型:

代码语言:javascript
复制
mkfifo()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5134154

复制
相关文章

相似问题

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