1. #include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
int main(int argc, const char *argv[])
{
int fd = open("./err.txt", O_WRONLY | O_TRUNC | O_CREAT, 0666);
if (fd == -1)
{
perror("fd");
return 1;
}
int a = dup(2);
dup2(fd, 2);
close(fd);
int fd1 = open("./text.txt", O_RDONLY);
if (fd1 == -1)
{
perror("fd1");
return 1;
}
int fd2 = open("./text22.txt", O_WRONLY | O_TRUNC | O_CREAT, 0666);
if (fd2 == -1)
{
perror("fd2");
return 1;
}
char s[100];
while (1)
{
int renval = read(fd1, s, 100);
if (renval == -1)
{
perror("read");
break;
}
if (renval == 0)
{
break;
}
int retval = write(fd2, s, renval);
if (retval == -1)
{
perror("write");
break;
}
}
close(fd1);
close(fd2);
dup2(a, 2);
close(a);
return 0;
}
2.
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
int main(int argc, const char *argv[])
{
const char *name = argv[1];
struct stat f1;
stat(name, &f1);
mode_t mode = f1.st_mode | S_IWUSR;
mode_t mode1 = f1.st_mode & ~S_IWUSR;
mode_t m = f1.st_mode;
if ((m | S_IWUSR) == m) {
if (chmod(name, mode1) == -1) {
perror("chmod");
return 1;
}
} else {
if (chmod(name, mode) == -1) {
perror("chmod");
return 1;
}
}
system("ls -l");
return 0;
}