Я пытаюсь скопировать содержимое файла в другой файл. Я также хочу отобразить содержимое файла на экране, и я хочу сделать все это, используя системные вызовы (запись), если это возможно.
Это мой код
#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define PERMS 0644
char *workfile = "file1.txt";
char *workfile2 = "file2.txt";
int main(int argc, char *argv[])
{
int fd;
int fd2;
int fd3;
ssize_t nread0;
ssize_t nread;
char buf[1024];
char buf2[1024];
ssize_t nread2;
const char msg[] = "File 3 contains:";
if ((fd= open(workfile, O_RDWR,PERMS)) == -1) {
printf("Couldn't open %s\n", workfile);
exit(1);
}
if ((fd2 = open(workfile2,O_RDWR,PERMS)) == -1) {
printf("Couldn't open %s\n",workfile2);
exit(1);
}
while (nread =read(fd,buf,1024)) {
if (lseek(fd2,0,SEEK_END) < 0) return 1;
if (write(fd,buf,nread) && write(1,buf,nread) < nread) {
close(fd);
close(fd2);
return(-3);
}
}
close(fd);
if (nread ==-1) {
return (-4);
}
return 0;
}
Когда я пытаюсь записать и на экран, содержимое file1
не копируется в file2
, а содержимое file1
выводятся на экран.
Я также попытался добавить read
и write
вне цикла while
с отдельным буфером и ssize_t
.
Что вызывает этовопрос