a. Hàm thay đổi thư mục hiện hành chdir
Hàm này cho phép thay đổi thư mục hiện hành, nếu thực hiện được hàm trả về giá trị 0. Chúng ta có thể gọi hàm này thực hiện như sau :
If (chdir(« ../sorties »)){ Printf(chdir : %d\n’,errno) ; Exit(1) ;
}
b. Hàm thay đổi quyền truy cập tệp chmod
Hàm này cho phép thay đổi quyền truy cập tệp, nếu thực hiện được hàm trả về giá trị 0. Chúng ta có thể gọi hàm này thực hiện như sau :
If (chmod(«fich »,00200)){ Printf(chmod : %d\n’,errno) ; Exit(1) ;
}
Một số giá trị của quyền truy cập :
00400 : Cho phép đọc dành cho cấp ưu tiên 00200 : Cho phép ghi dành cho cấp ưu tiên 00100 : Cho phép xử lý dành cho cấp ưu tiên 00040 : Cho phép đọc dành cho cấp nhóm. 00020 : Cho phép ghi dành cho cấp nhóm 00010 : Cho phép xử lý dành cho cấp nhóm 00004 : Cho phép đọc dành cho cấp khác 00002 : Cho phép ghi dành cho cấp khác 00001: Cho phép ghi dành cho cấp khác
c. Kiểm soát quyền truy cập tệp acces
Hàm này thực hiện việc kiểm tra xem tiến trình đang thi hành được phép đọc, ghi hay xử lý.
Ví dụ
If (acces(«fich »,4)){ Exit(1) ;
Ví dụ này sẽ kiểm tra tệp fich có quyền đọc đối với tiến trình hiện tại không. Nếu lỗi hàm sẽ trả về giá trị -1 và ngược lại hàm trả về giá tri 0.
Những giá trị cho tham số thứ 2 của hàm acces là : 4 : Quyền đọc
2 : Quyền viết 1 : Quyền xử lý
0 : Tồn tại chỉ tệp rỗng.
d. Hàm liên kết tệp link
Hàm này cho phép liên kết đến một tệp khác, nếu thực hiện thành công hàm trả về giá trị 0 ngược alị trả về giá trị -1.
If (link(«fich », »fich_syno)){ Printf(‘link : %d\n’,errno) ; Exit(1) ;
}
e. Hàm huỷ liên kết tệp unlink
Hàm này cho phép huỷ một liên kết đến một tệp khác, nếu thực hiện thành công hàm trả về giá trị 0 ngược lại trả về giá trị -1.
If (unlink(«fich », »fich_syno)){ Printf(‘unlink : %d\n’,errno) ; Exit(1) ;
}
f. Ví dụ các chương trình thi hành lệnh Unix
L nh cdệ
#include<stdio.h> #include<unistd.h>
int main (int argc, char **argv) {
if (argc < 2) {
printf(``Usage: %s <repertoire> \n'',argv[0]); exit(1);
}
printf(``Error in chdir n''); exit(1); } return 0; } L nh lsệ #include <sys/types.h> #include <sys/dir.h> #include <sys/param.h> #include <stdio.h> char pathname[MAXPATHLEN]; void main() { int count,i;
struct direct **files; getwd (pathname) == NULL )
count = scandir (pathname, &files, NULL, NULL); printf(``Repertoire courant = %s Nombre de fichiers = %d \n'',pathname,count);
for (i=1;i<count+1;++i)
printf(``%s '',files[i-1]->d_name); printf(`` n''); }