Jump to content

Хэрэглэгч:KayaSuke

Википедиа — Чөлөөт нэвтэрхий толь

Файл удирдлагын close системийн дуудалт

Олон үйлдлийн системд файлын удирдлагын системийн дуудлагууд нь файл үүсгэх, нээх, унших, бичих, хаах гэх мэт төрөл бүрийн файлын үйлдлийг гүйцэтгэхэд ашиглагддаг. Файлын удирдлагын системийн хамгийн үндсэн дуудлагын нэг бол нээлттэй файлд өгөгдөл бичихэд ашигладаг бичих системийн дуудлага юм. Unix-тэй төстэй систем дээрх Си програмчлалд бичих системийн дуудлагыг хэрхэн ашигладаг тухай үндсэн тоймыг доор харуулав.

Ангил хэл дээрх дэлгэрэнгүй бусад олдоц нь: https://en.wikipedia.org/wiki/Close_(system_call)

- Файлыг хаахад ямар системийн дуудлагыг ашигладаг вэ?

системийн дуудлагыг хаах буюу SYNOPSIS

#include <unistd.h> 

int close(int fd);

ТОДОРХОЙЛОЛТ

close() нь файлын тодорхойлогчийг хаадаг бөгөөд энэ нь ямар ч файлд хамаарахгүй бөгөөд дахин ашиглах боломжтой. Процессын эзэмшиж, холбоотой байсан файл дээр хадгалагдсан бүх бичлэгийн түгжээг (see fcntl(2)) устгана (түгжээг авахад ашигласан файлын тодорхойлогчоос үл хамааран).

Хэрэв fd нь тодорхой файлын тодорхойлогчийн сүүлчийн хуулбар бол түүнтэй холбоотой нөөцүүд чөлөөлөгдөнө; Хэрэв тодорхойлогч нь unlink(2) ашиглан устгасан файлын сүүлчийн лавлагаа байсан бол файл устгагдана.

  • "fd" нь таны бичихийг хүссэн нээлттэй файлын файлын тодорхойлогч юм.
  • "buf" нь таны бичихийг хүссэн өгөгдлийн заагч юм.
  • "count" гэдэг нь бичихийг хүссэн байтны тоо юм.

RETURN VALUE = утгыг буцаах

C library POSIX definition = C номын сангийн POSIX тодорхойлолт

[засварлах | кодоор засварлах]

The close call is standardized by the POSIX specification

int close  (int filedes);
int fclose (FILE *stream);

Функц нь файлыг амжилттай хаасныг харуулахын тулд тэгийг буцаана. Хэрэв ямар нэгэн алдаа гарвал -1-ийн утгыг буцаан өгч, errno-г зохих ёсоор тохируулна.

Гарч болох алдаанууд нь:

Tag Description
EBADF fd нь хүчинтэй нээлттэй файлын тодорхойлогч биш байна.
EINTR Close() дуудлага дохиогоор тасалдсан.
EIO I/O алдаа гарах үед.
#include <unistd.h>

int main() {
    int fd = open("file.txt", O_RDONLY);
    if (fd == -1) {
        // Handle error
    }
    // Perform operations on the file
    close(fd);
    return 0;
}

хаах: Хаах системийн дуудлагыг файлын тодорхойлогчийг хааж, холбогдох нөөцийг гаргахад ашигладаг. Энэ нь хаалттай байх файлын тодорхойлогч нэг параметрийг шаарддаг: int close(int fd); fd : Хаах файлын тодорхойлогч. Бүтэн тестийн эх код:

#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>

int main()
{
    int n, fd;
    char buff[50]; // буфер зарлаж байна

    // Дэлгэц дээр мессеж хэвлэх
    printf("Enter text to write in the file:\n");
    // std оролтын төхөөрөмжийн хувьд 0-г fd гэж зааж, гараас уншина уу
    // Энд n тэмдэгтийн тоог хадгална
    n = read(0, buff, 50);

    // open ашиглан шинэ файл үүсгэх.
    fd = open("file", O_CREAT | O_RDWR, 0777);

    // Оролтын өгөгдлийг файлд бичих (fd)
    write(fd, buff, n);
    // Дэлгэц рүү бичих (1 нь гаралтын төхөөрөмжийн стандарт fd)
    write(1, buff, n);

    // файлыг хаах
    int close(int fd);

    return 0;
}
Enter text to write in the file:
Hello world, welcome @ IncludeHelp
Hello world, welcome @ IncludeHelp

[Ангилал:Үйлдлийн систем]