我正在尝试编写一个c程序,其中我使用了mknod命令,例如
#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上失败,并给出无效参数的错误。
发布于 2011-02-28 00:41:51
mknod已弃用;您不应使用它。如果要创建先进先出,请使用标准mkfifo。如果你想创建一个普通的文件,使用creat或者带有O_CREAT的open。是的,mknod可以创建设备节点,在一些系统上可能仍然是这样做的,但在现代的Linux系统上,您需要依靠内核和/或udevd来处理这一点。
发布于 2011-02-28 00:00:20
testfile mknod(“
”,'b',0);
在这里,'b'并不是一个非常明智的理由。mknod的参数应该是权限掩码(由umask修改)和S_IFREG (对于常规文件)或S_IFIFO (对于先进先出)的逐位OR。例如:
mknod("textfile",S_IFREG | 0666,0);
发布于 2016-06-27 12:04:28
您可以使用mknode函数创建命名的PIPI,但也可以使用它来创建dev文件,因此您必须指定要使用用户权限创建哪个文件,并且dev类型为零
语法:
mknode (const char* fileName, mode_t mode | S_IFIFO, (dev_t) 0) 例如:
mknode("pipe1",0777 | S_IFIFO, (dev_t) 0)您还可以使用mkfifo来创建它的管道指定的文件,因为不需要指定您想要创建的文件类型:
mkfifo()https://stackoverflow.com/questions/5134154
复制相似问题