搜索
您的当前位置:首页实验七 LINUX文件系统编程

实验七 LINUX文件系统编程

来源:乌哈旅游


实验七 LINUX文件系统编程

一、实验目的:

(1)掌握LINUX文件系统的基本原理,结构和实现的方法

(2)掌握LINUX文件系统中文件的建立,打开,读写,执行,属性等系统调用的使用.

二、实验内容:

(1)仔细阅读提供的源代码

(2)理解LINUX文件系统的基本原理

(3)调试提供的源代码

三、实验作业:

#include

#include

#include

#include

#include

#include

#include

#include

#define MAX 128

int chmd();

int chmd ()

{

int c;

mode_t mode=S_IWUSR;

printf(\" 0. 0700\\n 1. 0400\\n 2. 0200 \\n 3. 0100\\n \");

printf(\"Please input your choice(0-3):\");

scanf(\"%d\

switch(c)

{

case 0: chmod(\"file1\

case 1: chmod(\"file1\

case 2: chmod(\"file1\

case 3: chmod(\"file1\

default:printf(\"You have a wrong choice!\\n\");

}

return(0);

}

main()

{

int fd;

int num;

int choice;

char buffer[MAX];

struct stat buf;

char* path=\"/bin/ls\";

char* argv[4]={\"ls\

while(1)

{

printf(\"********************************\\n\");

printf(\"0. 退出\\n\");

printf(\"1. 创建新文件\\n\");

printf(\"2. 写文件\\n\");

printf(\"3. 读文件\\n\");

printf(\"4. 修改文件权限\\n\");

printf(\"5. 查看当前文件的权限修改文件权限\\n\");

printf(\"********************************\\n\");

printf(\"Please input your choice(0-6):\");

scanf(\"%d\

switch(choice)

{

case 0:close(fd);

exit(0);

case 1:

fd=open(\"file1\

if(fd==-1)

printf(\"File Create Failed!\\n\");

else

printf(\"fd = %d\\n\

break;

case 2:

num=read(0,buffer,MAX);

write(fd,buffer,num);

break;

case 3:

read(fd,buffer,MAX);

write(1,buffer,num);

break;

case 4:

chmd ();

printf(\"Change mode success!\\n\");

break;

case 5:

execv(path,argv);

break;

default:

printf(\"You have a wrong choice!\\n\");

}

}

}

(1)程序分析

输出:

[root@localhost root]# ./7.out

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):0

[root@localhost root]# ./7.out

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):1

fd = 3

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):2

123

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):3

123

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):3

123

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):4

0. 0700

1. 0400

2. 0200

3. 0100

Please input your choice(0-3):0

Change mode success!

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):3

123

********************************

0. 退出

1. 创建新文件

2. 写文件

3. 读文件

4. 修改文件权限

5. 查看当前文件的权限修改文件权限

********************************

Please input your choice(0-6):5

-rwx------ 1 root root 4 2010-12-21 21:52 file1

(2)num=read(0,buffer,MAX); write(fd,buffer,num);代码的含义?

参数buffer为指向缓冲区的指针,MAX为缓冲区的大小(以字节为单位)。函数read()实现从文件描述符fd所指定的文件中读取MAX个字节到buffer所指向的缓冲区中,返回值为实际读取的字节数。函数write实现将把num个字节从buffer指向的缓冲区中写到文件描述符fd所指向的文件中,返回值为实际写入的字节数。

(3)系统调用execv()的用途?

execv()用来执行参数path字符串所代表的文件路径,execve()只需两个参数,第二个参数利用数组指针来传递给执行文件。

返回值

如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno 中。

范例 /* 执行/bin/ls -al /etc/passwd */

#include

main()

{

char * argv[ ]={“ls”,”-al”,”/etc/passwd”,(char*) }};

execv(“/bin/ls”,argv);

}

执行

-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd

(4)心得体会

因篇幅问题不能全部显示,请点此查看更多更全内容

Top