我需要使用 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("error\n" );
}
exit(0);
}
最佳答案
mknod
通常用于创 build 备节点(特殊目录)。
但是,某些操作系统确实支持使用 mknod
(QNX) 创建常规目录。
您是否在您使用的操作系统上查看了 mknod 的手册页?我很确定 S_IFDIR
是 mknod
的不可移植选项。
关于使用 mknod() 创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811662/