1,
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "errno.h"
#include "unistd.h"
#include "string.h"
int main(int argc, const char *argv[])
{
#if 1 //大小
int fd=open("./text",O_RDONLY);
if(fd==-1)
{
perror("fd");
return -1;
}
lseek(fd,2,SEEK_SET);
int l=0;
read(fd,&l,sizeof(int));
close(fd);
#endif
#if 1 //裁剪
int fd=open("./text",O_RDWR);
if(fd==-1)
{
perror("fd");
return -1;
}
lseek(fd,54,SEEK_SET);
char color[3]={255,255,255};
int i,j;
for(i=0;i<60;i++)
{
for(j=0;j<500;j++)
write(fd,color,sizeof(color));
}
close(fd);
#endif
#if 1 //复制
int fd1=open(argv[1],O_RDONLY);
int fd2=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0777);
if((fd1==-1)||(fd2==-1))
{
perror("fd");
return -1;
}
char rbuf[128];
int res;
while((res=read(fd1,rbuf,sizeof(rbuf))!=0))
write(fd2,rbuf,res);
close(fd1);
close(fd2);
#endif
return 0;
}
2
#include <stdio.h>
#include <syspes.h>
#include <sysat.h>
#include <fcntl.h>
#include "errno.h"
#include "unistd.h"
#include "string.h"
#include "pwd.h"
#include "grp.h"
#include "time.h"
int main(int argc, const char *argv[])
{
struct stat st;
int ret=stat(argv[1],&st);
if(ret==-1)
{
perror("stat");
return -1;
}
char s[11]={0};
switch(st.st_mode&S_IFMT)
{
case S_IFBLK: s[0]='b'; break;
case S_IFCHR: s[0]='c'; break;
case S_IFDIR: s[0]='d'; break;
case S_IFIFO: s[0]='p'; break;
case S_IFLNK: s[0]='l'; break;
case S_IFREG: s[0]='-'; break;
case S_IFSOCK: s[0]='s'; break;
default: printf("unknown?\n"); break;
}
s[1]=(st.st_mode&S_IRUSR?'r':'-');
s[2]=(st.st_mode&S_IWUSR?'w':'-');
s[3]=(st.st_mode&S_IXUSR?'x':'-');
s[4]=(st.st_mode&S_IRGRP?'r':'-');
s[5]=(st.st_mode&S_IWGRP?'w':'-');
s[6]=(st.st_mode&S_IXGRP?'x':'-');
s[7]=(st.st_mode&S_IROTH?'r':'-');
s[8]=(st.st_mode&S_IWOTH?'w':'-');
s[9]=(st.st_mode&S_IXOTH?'x':'-');
int linknum=st.st_nlink;
char *fuser=getpwuid(st.st_uid)->pw_name;
char *guser=getgrgid(st.st_gid)->gr_name;
long int filesize=st.st_size;
char *time=ctime(&st.st_mtime);
char mtime[512]={0};
strncpy(mtime,time,strlen(time)-1);
char buf[1024];
sprintf(buf,"%s %d %s %s %ld %s %s",s,linknum,fuser,guser,filesize,mtime,argv[1]);
printf("%s\n",buf);
return 0;
}