创建目录:

用mkdir函数创建目录:

mkdir(const char *pathname, mode_t mode)

参数mode有下列的组合:

S_ISUID 04000 文件的执行时设置用户ID(set user-id on execution)位

S_ISGID 02000 文件的执行时设置组ID(set group-id on execution)位

S_ISVTX 01000 文件的保存正文(粘着位sticky)位

S_IRWXU            00700 文件所有者具有读、写、执行权限

S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限

S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限

S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限

S_IRWXG 00070 用户组具有读、写、执行权限

S_IRGRP 00040 用户组具可读取权限

S_IWGRP 00020 用户组具可写入权限

S_IXGRP 00010 用户组具可执行权限

S_IRWXO 00007 其他用户具有读、写、执行权限

S_IROTH 00004 其他用户具可读取权限

S_IWOTH 00002 其他用户具可写入权限

S_IXOTH 00001 其他用户具可执行权限

代码如下

#include <unistd.h>

#include <sys/stat.h>

void make_dir_function(){

const char *pathname="/home/zhf/c_test";

mkdir(pathname,0744);

}

读目录:

DIR *opendir(const char *pathname); 获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL

DIR 结构体的原型为:struct_dirstream在linux系统中:typedef struct __dirstream DIR;

struct __dirstream
       {
         void *__fd; /* `struct hurd_fd' pointer for descriptor.   */
         char *__data; /* Directory block.   */
         int __entry_data; /* Entry number `__data' corresponds to.   */
         char *__ptr; /* Current pointer into the block.   */
         int __entry_ptr; /* Entry number `__ptr' corresponds to.   */
         size_t __allocation; /* Space allocated for the block.   */
         size_t __size; /* Total valid data in the block.   */
         __libc_lock_define (, __lock) /* Mutex lock for this structure.   */
        };

struct dirent *readdir(DIR *dp); 读取opendir 返回值的那个列表. 返回dirent结构提指针,dirent结构体成员如下:

struct dirent

  {

  long d_ino; /* inode number 索引节点号 */

  off_t d_off; /* offset to this dirent 在目录文件中的偏移 */

  unsigned short d_reclen; /* length of this d_name 文件名长 */

  unsigned char d_type; /* the type of d_name 文件类型 */

  char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */

}

代码如下:

void read_files_in_dir(){

DIR *dirptr=NULL;

struct dirent *entry;

dirptr=opendir("/home/zhf/c_prj");

while(entry=readdir(dirptr)){

printf("The file name is %s\n",entry->d_name);

}

closedir(dirptr);

}

运行结果:

The file name is function.o

The file name is chapter3.c

The file name is main.c

The file name is file.hole

The file name is chapter3

The file name is file_function

The file name is file_function.c

The file name is main.o

The file name is offer_test.c

The file name is .

The file name is function.c

The file name is ..

The file name is main

The file name is offer_test

目录修改:

每个进程都有一个当前工作目录,进程调用chdir或fchdir函数可以更改当前工作目录

下面这段代码修改工作目录为/home/zhf/c_prj

void change_dir_function(){

char *ptr;

size_t size;

chdir("/home/zhf/c_prj");

}

但是当我们在shell中用pwd去查询的时候发现工作目录还是/home/zhf,修改工作目录并没有生效

root@zhf-maple:/home/zhf# pwd

/home/zhf

这是因为每个程序运行在独立的进程中,shell的当前工作目录并不会随着程序调用chdir而改变。所以为了改变shell进程自己的工作目录,shell应当直接调用chdir函数。那么在代码中修改了工作目录如何查看呢? 这就需要用到getcwd函数

char *getcwd(char *buf,size_t size)  若成功,返回buf, 若出错,返回Null

代码如下

void change_dir_function(){

char *ptr;

size_t size;

chdir("/home/zhf/c_prj");

ptr=(char *)malloc(sizeof(size));

getcwd(ptr,size);

printf("the work directory is %s\n", ptr);

}

the work directory is /home/zhf/c_pr

linux c编程:文件夹操作的更多相关文章

  1. Linux系统编程--文件IO操作

    Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...

  2. Python学习(九)IO 编程 —— 文件夹及文件操作

    Python 文件夹及文件操作 我们经常会与文件和目录打交道,对于这些操作,python可以使用 os 及 shutill 模块,其中包含了很多操作文件和目录的函数. os 可以执行简单的文件夹及文件 ...

  3. linux —— 学习笔记(文件、文件夹操作)

    目录:1.常用的文件文件夹操作 2.文件属性的设置 1.常用的文件文件夹操作 mkdir  创建文件夹 -p 如果指定 a/b/c 时 a .b 不存在,一起创建出来 cp       复制文件或文件 ...

  4. linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令.   /dev:设备特殊文件.   /etc:系统管理和配置文件.   /etc/rc.d:启动的配 置文件和脚本.   /ho ...

  5. python文件、文件夹操作OS模块

    转自:python文件.文件夹操作OS模块   '''一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: ...

  6. 【转】linux下各文件夹的结构说明及用途介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  7. centos文件/文件夹操作-检查磁盘、内存、cpu使用情况-vi操作命令

    Part1:CentOS文件/文件夹操作 1.新建文件夹 即创建目录 mkdir 文件名 新建一个名为test的文件夹在home下 vi source1 mkdir /home/test 注意:当创建 ...

  8. Linux下各文件夹的结构说明及用途介绍(转载)

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  9. Spark修炼之道(基础篇)——Linux大数据开发基础:第二节:Linux文件系统、文件夹(一)

    本节主要内容 怎样获取帮助文档 Linux文件系统简单介绍 文件夹操作 訪问权限 1. 怎样获取帮助文档 在实际工作过程其中,常常会忘记命令的使用方式.比如ls命令后面能够跟哪些參数,此时能够使用ma ...

  10. linux下各文件夹的结构说明及用途介绍:Linux目录结构介绍

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

随机推荐

  1. XP如何在桌面新建宽带连接的快捷方式

    1 打开控制面板,点击网络和Internet连接 2 如果存在宽带连接选项. 则点击左侧的网上邻居,然后点击查看网络连接 右击宽带连接,点击创建快捷方式,放到桌面,改一下快捷方式的名字即可.   3 ...

  2. mysql误操作后通过binlog恢复,同时解决tmp目录满的问题

    注意: 本文的恢复,并不是基于恢复某个时间点的全量备份后的增量恢复,而是指在现有数据库基础上基于binlog的恢复.适用于较小的数据误操作. 提取日志文件为sql语句: /usr-ext/local/ ...

  3. 解决log4j.xml问题http//jakarta.apache.org/log4j/ uri is not registered

    在Eclipse中,配置log4j.xml出现"http //jakarta.apache.org/log4j/ uri is not registered"的错误信息. 原始的l ...

  4. requestAnimationFrame 使用

    1.概述 参考网址:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestAnimationFrame window.reque ...

  5. 【VBA】获取Excle的安装路径

    在VBA中,如何获取Excle的安装路径呢?请看以下代码: Sub 获取Excle的安装路径() MsgBox "Excle的安装路径为:" & Application.P ...

  6. Mybatis 批量插入数据

    --mybatis 批量插入数据 --1.Oracle(需要测试下是否支持MySQL) < insert id ="insertBatch" parameterType=&q ...

  7. JS与原生OC/Swift相互调用总结

    代码地址如下:http://www.demodashi.com/demo/12754.html JS-OC-Swift JS和OC/Swift相互调用,主要总结了JS和OC交互的三种方式 1.使用UI ...

  8. Eclipse更改默认工作环境编码为UTF-8(9.6)

    1 window---->preference------>General----->Workspace---->Text file encoding---->Other ...

  9. nightwatch-js -- test group

    Test group 可以将你的测试脚本划分到组中,并根据需要运行它们.要将测试组合在一起,只需将它们放在相同的子文件夹中,文件夹的名字即是组的名字.例如:lib/├── selenium-serve ...

  10. oracle数据库权限管理

    权限管理: oracle 9里面默认的三个username和password: sys change_on_install //权限最高的管理员 system manager //普通的管理员 sco ...