Я начинаю интересоваться file descriptors
в C
, я написал следующий код:
int main (void)
{
int fd1, fd2, sz;
char *buf = "hello world !!!";
char *buf2 = malloc(strlen(buf));
fd1 = open ("test.txt", (O_RDWR | O_CREAT));
printf("file fd1 created\n");
write(fd1, buf, strlen(buf));
printf("write %s, in filedescpror %d\n", buf, fd1);
sz = read(fd1, buf2, strlen(buf));
printf("read %s, with %d bytes from file descriptor %d\n", buf2, sz, fd1);
close(fd1);
fd2 = open ("testcpy.txt", (O_RDWR | O_CREAT));
write(fd2, buf2, strlen(buf));
close(fd2);
return 0;
}
Обычно:
- два файла с чтением ипредоставляются разрешения на запись,
buf
вставляется в fd1
fd1
и считывается, а данные сохраняются в bf2
bf2
разбирается на fd2
Первая проблема заключается в том, что разрешение, которое я получаю в результате, неверно, происходит то, что что-то вне buf2
разбирается на fd2
.
Может кто-нибудь сказать мне, что происходит, мой код неверен, или то, что происходит, является ожидаемым поведением.