实验四Linux下的C语言编程Word下载.docx
《实验四Linux下的C语言编程Word下载.docx》由会员分享,可在线阅读,更多相关《实验四Linux下的C语言编程Word下载.docx(7页珍藏版)》请在冰点文库上搜索。
close(),lseek()
#include<
sys/types.h>
sys/stat.h>
fcntl.h>
stdlib.h>
errno.h>
stdio.h>
unistd.h>
intmain(intargc,charconst*argv[])
{
intfile1,file2,file3;
if(argc!
=4){
printf("
Usage:
copyfile1file2file3\n"
);
exit
(1);
}
file1=open(argv[1],O_RDONLY);
file2=open(argv[2],O_RDONLY);
file3=open(argv[3],O_CREAT|O_RDWR,S_IRWXU);
intn;
charbuf[1024];
while((n=read(file1,buf,1024))>
0)
if(write(file3,buf,n)!
=n)
writeerror\n"
if(n<
read%serror\nErrno=%d\n"
argv[1],errno);
if(lseek(file3,30,SEEK_END)==-1)
printf("
lseekerror"
while((n=read(file2,buf,1024))>
0)
argv[2],errno);
exit(0);
close(file1);
close(file2);
close(file3);
success\n"
return0;
}
2、编程实现renam(即LINUX下的rename)命令,功能是实现文件的重命名。
renamfileafileb;
其中filea为源文件,fileb为目标文件。
程序执行时应显示出命令行的所有参数,并给出重命名前后两个文件的大小、索引节点号及最近一次状态改变的时间。
程序可能涉及到的系统调用:
read(),write(),open(),stat(),close(),link(),unlink()
time.h>
externinterrno;
intmain(intargc,constchar*argv[]){
structstatbuf1,buf2;
=3){
renameoldfilenewfile\n"
if(stat(argv[1],&
buf1)==-1){
starerror\nerrnois%d\n"
errno);
}
使用stat()显示文件%s的信息\n"
argv[1]);
%s大小-->
%d\n"
argv[1],(int)buf1.st_size);
%s索引节点号-->
argv[1],(int)buf1.st_ino);
%s最后一次修改时间-->
argv[1],(int)buf1.st_mtime);
--------------------------------------------------\n"
if(rename(argv[1],argv[2])==-1){
renameerror\nErrno%d\n"
exit
(1);
-------------------renamesuccess------------------\n"
if(stat(argv[2],&
buf2)==-1){
starerror\nErrnois%d\n"
argv[2]);
argv[2],(int)buf2.st_size);
argv[2],(int)buf2.st_ino);
argv[2],(int)buf2.st_mtime);
3、编程实现lnk命令,执行格式:
lnkf1f2f3。
具体要求如下:
⑴分别使用link()和symlink()为文件f1创建其硬链接文件f2和符号
链接文件f3。
⑵分别使用stat()和lstat()调用给出文件f2和f3大小、索引节点号、权限、存放该文件的设备号及文件修改时间,比较其异同。
说明原因。
intmain(intargc,char*argv[]){
structstatbuf1,buf2,buf3,buf4;
link_examoldfilelinkfnsymlinkfn\n"
if(link(argv[1],argv[2])==-1){
linkerror\nErrno=%d\n"
errno);
if(symlink(argv[1],argv[3])==-1){
symlinkerror\nErrno=%d\n"
if((stat(argv[2],&
buf1)==-1)|(stat(argv[3],&
buf2)==-1)){
使用stat()显示文件%s和%s的信息\n"
argv[2],argv[3]);
argv[2],(int)buf1.st_size);
argv[3],(int)buf2.st_size);
argv[2],(int)buf1.st_ino);
argv[3],(int)buf2.st_ino);
%s权限-->
argv[2],(int)buf1.st_mode);
argv[3],(int)buf2.st_mode);
%s文件所在设备号-->
argv[2],(int)buf1.st_dev);
argv[3],(int)buf2.st_dev);
argv[2],(int)buf1.st_mtime);
argv[3],(int)buf2.st_mtime);
****######@@@@@@&
&
STATEND&
@@@@@@****\n"
if((lstat(argv[2],&
buf3)==-1)|(lstat(argv[3],&
buf4)==-1)){
lstarerror\nerrnois%d\n"
使用lstat()显示文件%s和%s的信息\n"
%s大小是-->
argv[2],(int)buf3.st_size);
argv[3],(int)buf4.st_size);
argv[2],(int)buf3.st_ino);
argv[3],(int)buf4.st_ino);
argv[2],(int)buf3.st_mode);
argv[3],(int)buf4.st_mode);
argv[2],(int)buf3.st_dev);
argv[3],(int)buf4.st_dev);
argv[2],(int)buf3.st_mtime);
argv[3],(int)buf4.st_mtime);
LSTATEND&
3
THANKS!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考