您的位置:首页 > 运维架构 > Linux

Linux学习入门--文件编程学习三

2018-03-06 00:00 393 查看
摘要: 主要学习了目录文件的操作以及链接文件

1. 获取当前目录的路径:getwd() getcwd() get_current_dir_name()

2.进程重新指定到新的目录,即设置当前路径: chdir()/fchdir()

3. 创建目录: mkdir() 删除目录 rmdir()

4. 打开一个目录: opendir() 关闭一个目录: closedir()

5. 读取目录中的内容:readdir(),返回的是一个数组,包含目录的节点号和名称,见下面的例子,罗列出目录下的所有文件名字

6. 特殊文件的创建: mknod(管道、设备文件) 未写代码测试

7.文件的挂载与卸载: mount() unmount() (需要root用户) 未写代码测试

8.硬链接:link() 软链接:symlink() 读软链接本身的内容:readlink()

/* get_current_dir_name()使用需要定义该宏,并且放在所有头文件之前 */
#define _GNU_SOURCE
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

int main(void)
{
char buf[100] = {0};
char buf_read[100] ={0};
struct dirent *dirent1;

getcwd(buf,100);       //方法一:getcwd()获取当前目录的路径
printf("%s\n",buf);

printf("%s\n",get_current_dir_name());  //方法二:get_current_dir_name()获取当前目录的路径

if (mkdir("./test",0777) == -1)  //mkdir()创建一个目录test,删除非空目录rmdir()
{
perror("mkdir");
}

if (chdir("./test") == -1)  //chdir()重定向当前进程指向test目录,并不影响父进程
{
perror("chdir");
}
printf("current dir is: %s\n",get_current_dir_name()); //当前目录变成test

DIR * dp = opendir(get_current_dir_name());  //opendir()打开一个目录

while ((dirent1 = readdir(dp)) != NULL)   //readdir()循环输出文件目录下的内容
printf("read dirent d_name %s\n",dirent1->d_name);

if (link("./text.txt", "./text1.txt") == -1)  //link(),硬链接,相当于备份
{
perror("link");
}

if (symlink("./text.txt", "./text2") == -1) //symlink()软链接,创建的是快捷方式
{
perror("symlink");
}

int fd = open("./text2"); //打开软链接文件

read(fd, buf_read, 100);  //用read()读取的是它所指向文件里的内容

printf("text2 content is: %s\n",buf_read);

close(fd);

readlink("./text2", buf_read,100); //readlink()读出的是软链接本身的内容,即所链接文件的名字
printf("text2 real content is: %s\n",buf_read);

closedir(dp);
return 0;
}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件编程 Linux C