Закрытие и открытие файлов
Всем привет. Недавно начал изучать Линукс в универе, нам дали задание открытие и закрытие файлов. Можете подсказать как работает данный механизм в этой ОС. Я предполагаю, что по умолчанию любые процессы могут обращаться к файлу. К примеру я создал текстовый файл и обращаюсь к нему посредством двух дескрипторов, причем первый я не закрыл, и почему-то второй != -1.
Вот код программы:
''' #define _CRT_SECURE_NO_WARNINGS
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include<unistd.h>
#include<errno.h>
#include
using namespace std;
int main()
{
char buffer[100];
char s[100];
int len, cb, cbw1;
int hstdin = 0, hstdout = 1, fhandle, fhan2, fhan3;
char fname[] = "12.txt";
fhandle = open(fname, O_RDONLY | O_CREAT);
if (fhandle == -1)
{
cout << strerror(errno);
return 1;
}
fhan2 = dup(fhandle);
fhan3 = open(fname, O_RDONLY | O_CREAT);
if (fhan2 == -1 && fhan3 == -1)
return 1;
lseek(fhandle, 10, SEEK_SET);
printf(" h1 = %d h2 = %d h3 = %d\n", fhandle, fhan2, fhan3);
fflush(stdout);
cb = read(fhandle, buffer, 7);
write(1, buffer, cb);
write(1, "\n", 1);
cb = read(fhan2, buffer, 7);
write(1, buffer,cb);
write(1, "\n", 1);
cb = read(fhan3, buffer, 7);
write(1, buffer, cb);
write(1, "\n", 1);
read(0, buffer, 1);
close(fhandle);
} '''