Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Xử lí file trong Linux

  1. #1
    Ngày gia nhập
    11 2006
    Bài viết
    9

    Mặc định Xử lí file trong Linux

    Linux và Unix cung cấp hai cách truy cập file.
    • System call
    • Thư viện chuẩn stdio
    Thư viện chuẩn khá quen thuộc do nó nằm ở lớp cao nên thư viện chuẩn tương tự như nhau cho hầu hết hđh ( cả Window và Linux). Những hàm xử lí file ở mức thấp hơn là System call, hay còn gọi là mức kernel. Dĩ nhiên nó chạy trong kernel space.
    Thực tế thì thư viện stdio chạy ở mức user space, khi được triệu gọi nó sẽ chuyển sang kernel space xử lí. Các system call sẽ có trách nhiệm truy xuất xuống phần cứng. Việc truy xuât file đã khá quen thuộc đối với chúng ta với thư viện chuẩn. Bài viết này tui lặp lại cách truy xuất bằng thư viện chuẩn. Còn phần truy xuất file bằng system call sẽ post phần sau.
    Chúng ta sử dụng thư viện chuẩn của C để xuất nhập file. Các hàm xử lí file bao gồm:
    • fopen
    • fclose
    • fread, fwrite
    • fflush, fseek
    • fgetc, getc, getchar
    • fputc, putc, putchar
    • fgets, gets
    • printf, fprintf
    • scanf, fscanf

    Tất cả hàm này được khai báo trong stdio.h
    Đóng mở file
    Giả sử chúng ta muốn mở file /home/user/data.text
    FILE* f_read;
    FILE* f_write;
    FILE* f_append;
    f_read = fopen("/home/user/data.text", "r"); // mở file để đọc
    f_write = fopen("/home/user/data.text", "w"); //mở file để ghi
    // Mở file để thêm dữ liệu vào cuối file
    f_append = fopen("/home/user/data.text", "a");
    Một khi đã mở file và thực hiện xong thao tác cần thiết các bạn phải đóng file lại
    if(!fclose(f_read)
    {
    perror("Dong file khong duoc: /home/user/data.text");
    exit(1);
    }
    Đọc dữ liệu file đang mở
    int c;
    char buf[500];
    Đọc từng kí tự
    c= fgetc(f_read);
    Đọc theo từng khối
    if ( fread(buf, 499, 1, f_read)) perror("fread");
    Kiểm tra đến cuối file chưa
    if ( feof(f_read)) printf("Den cuoi file gu`i");
    Để ghi dữ liệu
    FILE* file_rw;
    file_rw = fopen(/home/user/data.text);
    char buf[200];
    strcpy(buf, "Hello, my friend");
    fputs(buf, file_rw);
    fflush(file_rw);
    Đã được chỉnh sửa lần cuối bởi spacetime : 22-10-2007 lúc 08:42 PM. Lý do: bổ sung
    360 yahoospacetime blog
    Tripod blog
    cũng của spacetime trên wordpress
    The god programmin language-C
    My name is 7h36h5ng
    password yahoo:mDn4kdn1z

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    4

    Bài viết còn sơ sài quá. Chưa nói rõ được cách xử lý file trên Linux khác Windows ở điểm nào? Mọi người cho ý kiến xem nào? Mình cũng đang quan tâm đến xử lý file trên Linux.


    Lưu ý:
    - Mỗi người có một suy nghĩ và cấp độ về trình độ khác nhau. Nếu bạn đã biết nó quá sơ sài, vui lòng bổ sung và hoàn thiện nó.
    - Bạn nói là bạn đang quan tâm thảo luận nhưng bạn chưa để cho mọi người biết bạn thực sự quan tâm thì khó có thể có sự thảo luận theo như bạn mong đợi được.
    (Posted by Dreaminess at 1:30PM 12/11/2007)

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    9

    Bạn xài thư viện chuẩn thì gần như rất ít sự khác biệt vì giống gần như 99.9%.
    Khác nhau khi bạn truy cập xuống cấp thấp hơn đó là system call của Linux. System call về file thì sẽ đề cập sâu hơn về quyền sử dụng file (permission ). Phần này mình sẽ post sau. Và cũng sẽ có ví dụ cụ thể để dễ hiểu hơn.
    360 yahoospacetime blog
    Tripod blog
    cũng của spacetime trên wordpress
    The god programmin language-C
    My name is 7h36h5ng
    password yahoo:mDn4kdn1z

  4. #4
    Ngày gia nhập
    01 2008
    Bài viết
    41

    bài viết thật sự còn sơ sài, lâu rồi ko ai tham gia và update. lãng mạn xin phép move ít sang box bài tập
    Đã được chỉnh sửa lần cuối bởi langman : 06-07-2009 lúc 06:03 PM.

Các đề tài tương tự

  1. Ghi số nguyên vào file bằng hàm int write(...) trong C linux?
    Gửi bởi megaboyvn trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 17-03-2012, 02:05 PM
  2. Đọc thuộc tính file trong C trên Linux như thế nào?
    Gửi bởi whiteboy trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 2
    Bài viết cuối: 06-02-2012, 08:37 AM
  3. mở file trong Linux bănng stdio.h
    Gửi bởi hardwire trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 1
    Bài viết cuối: 01-02-2012, 01:17 PM
  4. Nhân 2 ma trận từ file trong lập trình C trên Linux?
    Gửi bởi phongcnttbk trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 3
    Bài viết cuối: 20-04-2011, 09:14 AM
  5. Cách tổ chức File trong Linux
    Gửi bởi thanhsonla trong diễn đàn Thắc mắc chung
    Trả lời: 1
    Bài viết cuối: 27-03-2010, 12:06 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn