第14章习题参考答案Word格式文档下载.docx

上传人:b****6 文档编号:17036352 上传时间:2022-11-28 格式:DOCX 页数:9 大小:18.69KB
下载 相关 举报
第14章习题参考答案Word格式文档下载.docx_第1页
第1页 / 共9页
第14章习题参考答案Word格式文档下载.docx_第2页
第2页 / 共9页
第14章习题参考答案Word格式文档下载.docx_第3页
第3页 / 共9页
第14章习题参考答案Word格式文档下载.docx_第4页
第4页 / 共9页
第14章习题参考答案Word格式文档下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

第14章习题参考答案Word格式文档下载.docx

《第14章习题参考答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第14章习题参考答案Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。

第14章习题参考答案Word格式文档下载.docx

〔3〕将文件file改名为test,然后将test拷贝到/home

#mvfiletest

#cptest/home

〔4〕将/home/test文件的拥有着修改为tom,将文件所属组该为student

#chowntom:

student/home/test

第2章

一、填空题

1.Vi的三中工作模式:

插入模式、命令模式、末行模式。

2.Gcc生成可执行文件的四个步骤:

预处理、编译、汇编、链接。

3.Makefile用来描述程序或工程中各个文件之间的相互联系

4.make。

命令用来及时makefile文件中的命令

5.库分为静态库和共享库。

二、简答题

1.静态库和共享库的区别

〔1〕静态库的代码在编译时就已连接到开发人员开发的应用程序中。

〔2〕共享库只是在程序开场运行时才载入,在编译时,只是简单地指定需要使用的库函数。

〔3〕静态库文件以.a结尾,共享库文件以.so结尾。

2.Makefile文件的显式规那么是什么?

目标文件:

依赖文件列表

<

tab>

更新目标文件使用的命令

三、编程题

1.编写makefile:

当前目录下有文件a1.ca2.ca3.c,其中a1.c中带有main函数,其他文件为用户自定义函数供main函数调用,编写完成对这几个文件的编译工作生成可执行文件a

CC=gcc

BIN=a

$(CC)-o$(BIN)$^

clean:

rm-f*.o$(BIN)

2.编写makefile:

当前目录下有很多独立的程序文件:

aa.cbb.Ccc.c(即每个文件中都有main函数),分别要生成对应的我可执行文件aabbcc,为了方便用户操作,写一个makefile使得调用make命令会重新编译最新修改的程序文件

ALL:

aabbcc

rm-faabbcc

第3章

一、选择题

1.以下那个命令不是现实多个环境变量的C

AsetBexportCpwdDenv

2.获取某个环境变量值使用函数A

A.getenvB.putenvC.setenvD.unsetenv

二、填空题

1.命令行参数是main。

函数的参数

2.Main函数的参数假设有两个参数那么第一个参数代表命令行参数个数、第二个参数代表指向各命令行参数字符串的指针数组。

3.Linux中日期时间的表示方法有:

算术类型、构造体类型、字符串类型。

4.使用time函数获得的时间是算术类型、代表自1970年1月1日零时到当前时间的秒数。

5.把算数类型时间表示转换成构造体类型使用〔〕函数localtime。

6.把算数类型时间表示转换成字符串类型使用〔〕函数ctime。

7.Maketime函数把〔〕类型时间表示转换成〔〕类型时间表示构造体、算术。

8.如果一个C程序的入口表示为main〔intargc,char*argv[]〕,编译该程序后的可执行程序为a.out,那么在命令“./a.out–ffoo〞后,main中的参数argv[1]指向的字符串是〔“-f〞〕。

1.如果一个用户输入一个参数,那么打印“noargs〞,如果输入两个参数并且第二个命令行参数是-a,那么打印“Iwilldealwith-a〞,如果是-l那么打印“Iwilldealwith-l〞

#include<

stdio.h>

intmain(intargc,char*argv[])

if(argc==1)

printf("

noargs\n"

);

elseif(argc==2)

if(strcmp(argv[1],"

-a"

)==0)

printf("

Iwilldealwith-a\n"

-l"

Iwilldealwith-l\n"

return0;

第4章

1.文件系统保存在磁盘的B

2.Linux文件系统的根目录的i节点号为C

3.文件描述符的数据类型是B

4.设置文件偏移量的系统调用是C

5.下面那个不是lseek第三个参数的取值C

6.Sync系统调用的功能是A

7.Fsync系统调用的功能是B

8.Fdata系统调用的功能是C

1.Linux系统下表示标准输入、标准输出和标准错误输出的文件描述符〔符号表示〕分别为〔STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO〕,它们的值分别为0、1、2。

2.数字635表示的权限使用字母的方式表示为〔rw—wxr-x〕、使用符号方式表示为〔S_IRUSR|S_IWUSR|S_IWGRP|S_IXGRP|S_IROTH|S_IXOTH〕。

3.系统调用open的功能是翻开或创立文件。

4.使用open翻开文件时有三个标志必须要选择其一,这三个标志是O_RDONLY、O_WRONLY、O_RDWR。

5.文件偏移量代表下一次读或写的位置。

6.将文件偏移量市值为当前偏移处之前的4个字节的维护使用lseek〔fd,〔-4〕,〔SEEK_CUR〕〕。

7.设置翻开文件标志〔O_TRUNC〕,可以截断文件为0,使用系统调用〔truncate〕可以截断文件或者加长文件。

8.如果umask设置为022,那么创立一个新文件夹〔数字表示〕的权限为〔644〕、创立一个新目录的权限为〔755〕。

9.如果umask设置为024,那么创立一个新文件夹〔数字表示〕的权限为〔642〕、创立一个新目录的权限为〔753〕。

三、简答题

1.Linux文件类型主要有哪七类?

常规文件、目录文件、字符设备文件、块设备文件、管道文件、链接文件、套接字文件

2.简述文件、i节点、文件名、目录之间的关系

每个存在磁盘上的文件都由i节点和数据块两局部组成,i节点和文件一一对应,一个i节点可以对应多个文件名,文件名和i节点的对应关系叫做文件的硬链接,文件名和i节点的对应关系保存在目录文件中。

3.什么是文件描述符?

〔1〕一个非负整数,内核以此来标识一个特定进程正在操作的文件。

〔2〕012代表三个标准的文件描述符,分别为标准输入、标准输出、标准错误输出

4.使用符号方式表示rwxrwxrwx权限

S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP|S_IROTH|S_IWOTH|S_IXOTH

5.写出open一下6种翻开标志:

只读、只写、读写、追加、文件不存在创立、截断为0

O_RDONLYO_WRONLYO_RDWRO_APPENDO_CREATO_TRUNC

6.读程序,写出执行结果并解释得到该结果的原因

main()

intfd1,fd2;

fd1=open(“/etc/passwd〞,O_RDONLY);

fd2=open(“/etc/passwd〞,O_RDWR);

printf(“fd1=%d,fd2=%d\n〞,fd1,fd2);

close(fd1);

close(fd2);

结果:

fd1=3fd2=4

原因:

open返回的文件描述符为最小可用的非负整数,012是三个标准的文件描述符默认已经被占用,所以第一个open的返回值为3,第二个open返回的是4。

五、编程题

1.向文件f1中写入“helloworld!

〞,然后再将f1中的内容读出并显示在屏幕上。

〔注意必要的错误判断〕

unistd.h>

sys/stat.h>

sys/fcntl.h>

intmain()

intfd;

charbuf1[13]={"

helloworld!

"

};

charbuf2[12];

intnum;

fd=open("

f1"

O_RDWR|O_CREAT|O_TRUNC,0644);

if(fd==-1)

perror("

f1notopen"

exit

(1);

num=write(fd,buf1,sizeof(buf1)-1);

if(num!

=(sizeof(buf1)-1))

printf("

writelessthanwant\n"

lseek(fd,0,SEEK_SET);

num=read(fd,buf2,12);

=12)

readlessthan12\n"

write(1,buf2,12);

close(fd);

2.向文件f2中写入“aabbccddee〞,然后将偏移量移到绝对值偏移为4的位置处,读6个字符,并将结果显示在屏幕上

charbuf1[11]={"

aabbccddee"

charbuf2[10];

f2"

f2notopen"

lseek(fd,4,SEEK_SET);

num=read(fd,buf2,6);

=6)

readlessthan6\n"

write(1,buf2,6);

3.向文件f3中写入“aabbccddeeffgghh〞,然后将文件截短后的文件内容读出并显示在屏幕上

charbuf1[17]={"

aabbccddeeffgghh"

charbuf2[8];

f3"

f3notopen"

ftruncate(fd,8);

num=read(fd,buf2,8);

=8)

readlessthan8\n"

write(1,buf2,8);

4.在程序中将umask改至044,创立文件f4

umask(044);

creat("

f4"

S_IRUSR|S_IWUSR);

5.实现“cat文件名〞显示文件内容

fcntl.h>

main(intargc,char*argv[])

charbuf[10];

if(argc!

=2)

missfilename\n"

fd=open(argv[1],O_RDONLY);

erroropen"

while((num=read(fd,buf,10))!

=0)

write(1,buf,num);

6.实现“cp原文件目标文件〞

intfrom,to;

=3)

argumenterror\n"

from=open(argv[1],O_RDONLY);

to=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644);

num=read(from,buf,10);

while(num!

write(to,buf,num);

num=read(from,buf,10);

close(from);

close(to);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1