#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
int err=open("./err.txt",O_WRONLY|O_CREAT,0664);
perror("err");
dup2(err,STDERR_FILENO);
fflush(stderr);
int rfd=open(argv[1],O_RDONLY);
perror("rfd");
int wfd=open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0664);
perror("wfd");
char ch;
while(1){
int res=read(rfd,&ch,1);
perror("read");
if(res==0){break;}
write(wfd,&ch,1);
perror("write");
}
close(rfd);
perror("close(rfd)");
close(wfd);
perror("close(wfd)");
close(err);
perror("close(err)");
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, const char *argv[])
{
struct stat buf;
char ls[20]="ls -l ";
stat(argv[1],&buf);
mode_t mode=buf.st_mode;
if((mode|S_IWUSR)!=mode){
chmod(argv[1],0777);
system(strcat(ls,argv[1]));
}
else{
chmod(argv[1],0555);
system(strcat(ls,argv[1]));
}
return 0;
}