把底层的硬件接口抽象成一个虚拟的系统,只需要知道接口,利用用户程序去调用即可。
本章节主要部分:目录操作、文件操作
0标准输入、1标准输出、2标准错误
0777
代表一个八进制数
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char *fileName = "aaa";
int err;
err = mkdir(argv[1], 0777);
char dir[2556];
struct stat st;
getcwd(dir, 256);
printf("--- %s \n", dir);
stat(argv[1], &st);
if (S_ISDIR(st.st_mode))
{
printf("is dir!\n");
}
else if (S_ISREG(st.st_mode))
{
printf("is file!\n");
}
else
{
printf("other! \n");
}
}
2. 第二次课
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
int main(int argc, char *argv[])
{
DIR *d;
struct dirent *e;
mkdir(argv[1], 0666);
d = opendir("/home/");
while ((e = readdir(d)) != NULL)
{
printf("%s\n", e->d_name);
}
closedir(d);
}
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
DIR *d;
struct dirent *e;
char name[128];
struct stat buf;
printf("Please input the name: ");
scanf("%s", name);
stat(name, &buf);
if (S_ISDIR(buf.st_mode))
{
printf("is dir, the files are: \n");
d = opendir("/home/lighthouse");
while ((e = readdir(d)) != NULL)
{
printf("%s\n", e->d_name);
}
closedir(d);
}
else if (S_ISREG(buf.st_mode))
{
printf("is file! \n");
}
else if (S_ISLNK(buf.st_mode))
{
printf("is link file!\n");
}
}
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int fd; // 文件描述符
fd = open(argv[1], O_RDWR | O_SYNC);
if (fd < 0)
printf("error! \n");
else
printf("ok! \n");
close(fd);
return 0;
}