Linux C刘学勇 编著各章习题答案Word格式.docx
《Linux C刘学勇 编著各章习题答案Word格式.docx》由会员分享,可在线阅读,更多相关《Linux C刘学勇 编著各章习题答案Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
4.属主同组用户其他用户读写执行
5.当前工作目录工作目录
1.B2.C3.A4.B5.C
三、上机题
1、
#include<
sys/types.h>
sys/stat.h>
fcntl.h>
unistd.h>
stdio.h>
#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)
Sourcefileopenerror!
\n"
);
return2;
if((target_fd=open(*(argv+2),O_WRONLY|O_CREAT,PERMS))==-1)
Targetfileopenerror!
return3;
while((num=read(source_fd,iobuffer,BUFSIZE))>
0)
if(write(target_fd,iobuffer,num)!
=num)
Targetfilewriteerror!
return4;
close(source_fd);
close(target_fd);
return0;
}
2、
utime.h>
inti,fd;
structstatstatbuf;
structutimbuftimes;
if(argc!
=2)
{
printf("
%sfilename\n"
argv[0]);
return1;
if((fd=open(argv[1],O_RDWR))<
0)
%sopenfailed.\n"
argv[1]);
return3;
}
if(stat(argv[1],&
statbuf)<
return2;
if(ftruncate(fd,statbuf.st_size/2)<
0)
%struncatefailed.\n"
return4;
printf("
%sistruncatednow.\n"
return0;
}
3、
inti;
for(i=0;
i<
num;
i++)
{
if(iobuffer[i]>
='
a'
&
&
iobuffer[i]<
z'
)
iobuffer[i]-=32;
}
if(write(target_fd,iobuffer,num)!
printf("
return4;
4、
dirent.h>
charpath[1000];
DIR*dp;
structdirent*pdirent;
getwd(path);
if((dp=opendir(path))==NULL)
Opendir%sfailed\n"
path);
}
if((pdirent=readdir(dp))==0)
readdir%sfailed\n"
path);
%s\n"
pdirent->
d_name);
closedir(dp);
第4章习题答案
1.FILE结构的指针
2.标准输入标准输出标准错误输出
3.字符I/O函数行I/O函数块I/O函数
4.错误指示器文件结束指示器
5.全缓冲行缓冲无缓冲
1.D2.B3.D4.A5.C
main()
chara;
while
(1)
scanf("
%c"
&
a);
if(a=='
q'
return;
a);
intmain(intargc,char*argv[])
charbuf[1024];
FILE*fp;
%s<
filename>
if((fp=fopen(argv[1],"
r"
))==NULL)
{
Fileopenerror.\n"
while((fgets(buf,1024,fp))!
=0)
puts(buf);
inti;
for(i=0;
buf[i]!
\0'
;
if(buf[i]>
buf[i]<
buf[i]-=32;
}
intmain()
fp=tmpfile();
if(fp==NULL)
tmpfileerror!
OpenedatemporaryfileOK!
while((a=getchar())!
fputc(a,fp);
rewind(fp);
fputc(a,stdout);
第5章习题答案
1.运行态就绪态等待态
2.task_struct
3.用户模式系统模式
4.Forkvfork子进程父进程
5.进程标识号
1.B2.A3.D4.D5.A
pid_tpid;
intvari=5;
if((pid=vfork())<
vforkerror.\n"
elseif(pid==0)
Helloworld!
\n"
Childprocessexited!
_exit(0);
Parentprocessexited!
charcmd[100];
intstatus;
if((pid=fork())<
while
(1)
sleep
(2);
sprintf(cmd,"
kill%d"
pid);
if((status=system(cmd))<
systemerror.\n"
Childprocessisterminatedbyparentprocess.\n"
sys/wait.h>
stdlib.h>
if((status=system("
ls"
))<
exit(0);
intmain(intargc,char*argv[])
intpid;
if(argc<
=1)
filenanme>
return-1;
fp=fopen(argv[1],"
w"
Createdestfile%sfailed.\n"
return-2;
pid=getpid();
ThecurrentproessIDis%d\n"
pid);
fprintf(fp,"
%d"