第1-4章习题参考答案 联系客服

发布时间 : 星期五 文章第1-4章习题参考答案更新完毕开始阅读759df9d4dd3383c4ba4cd27f

close(fd1); close(fd2); }

结果:fd1=3 fd2=4

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

1.向文件f1中写入“hello world!”,然后再将f1中的内容读出并显示在屏幕上。(注意必要的错误判断) #include #include #include int main() { int fd; char buf1[13]={\ char buf2[12]; int num; fd = open( \ if(fd==-1) {

perror(\ exit(1); } num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1))

printf(\ lseek(fd,0,SEEK_SET); num=read(fd,buf2,12); if(num!=12) printf(\ write(1,buf2,12); close(fd); }

2.向文件f2中写入“aabbccddee”,然后将偏移量移到绝对值偏移为4的位置处,读6个字符,并将结果显示在屏幕上 #include #include #include int main() { int fd; char buf1[11]={\

char buf2[10]; int num; fd = open( \ if(fd==-1) {

perror(\ exit(1); } num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1)) printf(\ lseek(fd,4,SEEK_SET); num=read(fd,buf2,6); if(num!=6) printf(\ write(1,buf2,6); close(fd); }

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

#include #include #include int main() { int fd; char buf1[17]={\ char buf2[8]; int num; fd = open( \ if(fd==-1) {

perror(\ exit(1); } num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1)) printf(\ lseek(fd,0,SEEK_SET); ftruncate(fd,8); num=read(fd,buf2,8); if(num!=8) printf(\ write(1,buf2,8);

close(fd); }

4.在程序中将umask改至044,创建文件f4 #include #include #include int main() { int fd; umask(044); creat(\}

5.实现“cat文件名”显示文件内容 #include

main(int argc,char *argv[]) {

int fd; int num; char buf[10]; if(argc!=2) {

printf(\ exit(1); }

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

perror(\ exit(1); }

while((num=read(fd,buf,10))!=0) write(1,buf,num); close(fd); }

6.实现“cp 原文件 目标文件” #include #include

main(int argc,char *argv[]) {

int from,to; int num; char buf[10]; if(argc!=3) {

printf(\ exit(1); }

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

to=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644); num=read(from,buf,10); while(num!=0) { write(to,buf,num); num=read(from,buf,10); }

close(from); close(to); }