完整word版Linux C刘学勇 编著各章习题答案.docx
《完整word版Linux C刘学勇 编著各章习题答案.docx》由会员分享,可在线阅读,更多相关《完整word版Linux C刘学勇 编著各章习题答案.docx(13页珍藏版)》请在冰豆网上搜索。
![完整word版Linux C刘学勇 编著各章习题答案.docx](https://file1.bdocx.com/fileroot1/2023-1/10/0fe53314-51b6-456b-a405-6e09c595c007/0fe53314-51b6-456b-a405-6e09c595c0071.gif)
完整word版LinuxC刘学勇编著各章习题答案
LinuxC各章习题答案
第1章习题答案
一、填空题
1.Unix
2.Shell
3.普通文件目录文件设备文件
4.目录
5.mkdir
二、选择题
1.A2.A3.B4.C5.C
三、上机题(略)
第2章习题答案
一、填空题
1.Shell编程高级语言编程
2.viemacs
3.Makefile
4.Autoconf
5.Automake
二、选择题
1.A2.B3.A4.A5.C
三、上机题(略)
第3章习题答案
一、填空题
1.字节序列
2.文件描述符
3.Open
4.属主同组用户其他用户读写执行
5.当前工作目录工作目录
二、选择题
1.B2.C3.A4.B5.C
三、上机题
1、
#include
#include
#include
#include
#include
#definePERMS0666
#defineDUMMY0
#defineBUFSIZE1024
intmain(intargc,char*argv[])
{
intsource_fd,target_fd,num;
chariobuffer[BUFSIZE];
if(argc!
=3)
{
printf("Usage:
%sSourcefileTargetfile\n",argv[0]);
return1;
}
if((source_fd=open(*(argv+1),O_RDONLY,DUMMY))==-1)
{
printf("Sourcefileopenerror!
\n");
return2;
}
if((target_fd=open(*(argv+2),O_WRONLY|O_CREAT,PERMS))==-1)
{
printf("Targetfileopenerror!
\n");
return3;
}
while((num=read(source_fd,iobuffer,BUFSIZE))>0)
if(write(target_fd,iobuffer,num)!
=num)
{
printf("Targetfilewriteerror!
\n");
return4;
}
close(source_fd);
close(target_fd);
return0;
}
2、
#include
#include
#include
#include
#include
intmain(intargc,char*argv[])
{
inti,fd;
structstatstatbuf;
structutimbuftimes;
if(argc!
=2)
{
printf("Usage:
%sfilename\n",argv[0]);
return1;
}
if((fd=open(argv[1],O_RDWR))<0)
{
printf("%sopenfailed.\n",argv[1]);
return3;
}
if(stat(argv[1],&statbuf)<0)
return2;
if(ftruncate(fd,statbuf.st_size/2)<0)
{
printf("%struncatefailed.\n",argv[1]);
return4;
}
printf("%sistruncatednow.\n",argv[1]);
return0;
}
3、
#include
#include
#include
#include
#include
#definePERMS0666
#defineDUMMY0
#defineBUFSIZE1024
intmain(intargc,char*argv[])
{
intsource_fd,target_fd,num;
inti;
chariobuffer[BUFSIZE];
if(argc!
=3)
{
printf("Usage:
%sSourcefileTargetfile\n",argv[0]);
return1;
}
if((source_fd=open(*(argv+1),O_RDONLY,DUMMY))==-1)
{
printf("Sourcefileopenerror!
\n");
return2;
}
if((target_fd=open(*(argv+2),O_WRONLY|O_CREAT,PERMS))==-1)
{
printf("Targetfileopenerror!
\n");
return3;
}
while((num=read(source_fd,iobuffer,BUFSIZE))>0)
{
for(i=0;i{
if(iobuffer[i]>='a'&&iobuffer[i]<='z')
iobuffer[i]-=32;
}
if(write(target_fd,iobuffer,num)!
=num)
{
printf("Targetfilewriteerror!
\n");
return4;
}
}
close(source_fd);
close(target_fd);
return0;
}
4、
#include
#include
#include
#include
intmain(intargc,char*argv[])
{
charpath[1000];
DIR*dp;
structdirent*pdirent;
getwd(path);
if((dp=opendir(path))==NULL)
{
printf("Opendir%sfailed\n",path);
return2;
}
if((pdirent=readdir(dp))==0)
{
printf("readdir%sfailed\n",path);
return3;
}
printf("%s\n",pdirent->d_name);
closedir(dp);
return0;
}
第4章习题答案
一、填空题
1.FILE结构的指针
2.标准输入标准输出标准错误输出
3.字符I/O函数行I/O函数块I/O函数
4.错误指示器文件结束指示器
5.全缓冲行缓冲无缓冲
二、选择题
1.D2.B3.D4.A5.C
三、上机题
1、
#include
main()
{
chara;
while
(1)
{
scanf("%c",&a);
if(a=='q')
return;
printf("%c",a);
}
}
2、
#include
intmain(intargc,char*argv[])
{
charbuf[1024];
FILE*fp;
if(argc!
=2)
{
printf("Usage:
%s\n",argv[0]);
return1;
}
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("Fileopenerror.\n");
return1;
}
while((fgets(buf,1024,fp))!
=0)
puts(buf);
return0;
}
3、
#include
intmain(intargc,char*argv[])
{
charbuf[1024];
inti;
FILE*fp;
if(argc!
=2)
{
printf("Usage:
%s\n",argv[0]);
return1;
}
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("Fileopenerror.\n");
return1;
}
while((fgets(buf,1024,fp))!
=0)
{
for(i=0;buf[i]!
='\0';i++)
{
if(buf[i]>='a'&&buf[i]<='z')
buf[i]-=32;
}
puts(buf);
}
return0;
}
4、
#include
intmain()
{
FILE*fp;
chara;
fp=tmpfile();
if(fp==NULL)
{
printf("tmpfileerror!
\n");
return1;
}
printf("OpenedatemporaryfileOK!
\n");
while((a=getchar())!
='q')
{
fputc(a,fp);
rewind(fp);
fputc(a,stdout);
}
return0;
}
第5章习题答案
一、填空题
1.运行态就绪态等待态
2.task_struct
3.用户模式系统模式
4.Forkvfork子进程父进程
5.进程标识号
二、选择题
1.B2.A3.D4.D5.A
三、上机题
1、
#include
#include
#include
intmain()
{
pid_tpid;
intvari=5;
if((pid=vfork())<0)
{
printf("vforkerror.\n");
return1;
}
elseif(pid==0)
{
printf("Helloworld!
\n");
printf("Childprocessexited!
\n");
_exit(0);
}
printf("Parentprocessexited!
\n");
return0;
}
2、
#include
#include
#include
intmain()
{
pid_tpid;
charcmd[100];
intstatus;
if((pid=fork())<0)
{
printf("vforkerror.\n");
return1;
}
elseif(pid==0)
{
while
(1)
{
printf("Helloworld!
\n");
}
}
sleep
(2);
sprintf(cmd,"kill%d",pid);
if((status=system(cmd))<0)
printf("systemerror.\n");
printf("Childprocessisterminatedbyparentprocess.\n");
printf("Parentprocessexited!
\n");
return0;
}
3、
#include
#include
#include
#include
intmain()
{
intstatus;
if((status=system("ls"))<0)
{
printf("systemerror.\n");
exit(0);
}
return0;
}
4、
#include
#include
intmain(intargc,char*argv[])
{
FILE*fp;
intpid;
if(argc<=1)
{
printf("Usage:
%s\n",argv[0]);
return-1;
}
fp=fopen(argv[1],"w");
if(fp==NULL)
{
printf("Createdestfile%sfailed.\n",argv[1]);
return-2;
}
pid=getpid();
printf("ThecurrentproessIDis%d\n",pid);
fprintf(fp,"%d",pid);
return0;
}