c-使用mknod()创建目录



我需要使用mknod()创建一个目录(在我的情况下不允许使用mkdir()),我会从某个目录调用程序,并在上一个目录中引入应该创建新目录的路径。

例如:如果我是/home/user/test/,在test中有/level1/,我想在level1中创建目录level2,所以我会传递参数/level1/level2/

当我创建管道时,我有以下代码可以工作,但当我将模式更改为S_IFDIR时,它什么都不做。

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
void main(int argc,char *argv[]){
    int status;
    if ((status  = mknod(argv[1], S_IFDIR,0)) == 1){
        printf("errorn" );
    }
    exit(0);
}

mknod通常用于创建设备节点(特殊目录)。

但是,有些操作系统确实支持使用mknod(QNX)创建常规目录。

您是否查看了正在使用的操作系统上mknod的手册页?我确信S_IFDIR对于mknod来说是一个不可移植的选项。

上面的代码没有任何错误。我在旧版本的unix上遇到了这个问题,mknod需要root的有效id来创建目录。我怀疑如果你在失败后打电话给perror("),你会得到一些关于"的信息;不允许";。

相关内容

  • 没有找到相关文章

最新更新