Quản trị tệp

Một phần của tài liệu Giáo trình sử dụng quản trị và lập trình UNIX LINUX (Trang 90)

Trình Konqueror là trình quản trị tệp và là một trình duyệt Web của giao diện KDE.

Konqueror cho phép bạn cấu hình desktop, cấu hình hệ thống Red Hat Linux, chạy các tệp multimedia, xem ảnh số, duyệt Web và một số chức năng khác.

Mở Konqueror để quản trị tệp, bấm lên thư mục home .

Konqueror mở một cửa sổ trên desktop, cho phép bạn quản trị thư mục home cũng như hệ thống tệp Red Hat Linux. Bấm Home để quay về thư mục home.

Minh hoạ 3.32. Konqueror quản trị tệp

Konqueror hiển thị biểu tượng thu nhỏ cho các tệp text, ảnh, PDF, và web. Bạn cũng có thể xem qua các tệp âm thanh.

Navigation Panel

Một tính năng khác của Konquerornavigation panel. Panel này nằm ở cạnh trái của cửa sổ Konqueror.

Minh hoạ 3.33. Thanh Navigation Panel của Konqueror

Cho phép bạn vào Web bookmarks, browsing history, mạng, hệ thống tệp và mở các trình chạy các media. Thanh navigation panel này khiến cho Konqueror là một giải pháp hiệu quả cho người dùng muốn truy cập nhanh và dễ dàng các tệp.

3.3.5 Duyệt Web bằng Konqueror

Konqueror không chỉ cho phép bạn truy cập các tệp cục bộ, trên mạng mà còn có đầy đủ tính năng của một trình duyệt Web.

Để mở Konqueror chọn Main Menu => Internet => More Internet Applications => Konqueror Web Browser.

Minh hoạ 3.34. Duyệt Web bằngKonqueror

Để duyệt Web, nhập địa chỉ vào ô Location. Để biết thêm về Konqueror, bấm Help

và chọn Konqueror Handbook.

3.3.6 Dùng Konqueror để xem ảnh

Bạn có thể dùng Konqueror để xem ảnh. Bấm lên biểu tượng thư mục home để mở

Konqueror: .

Dùng Konqueror như một trình duyệt ảnh tương tự như Nautilus. Các tệp ảnh tự động tạo một bản thumbnail (thu nhỏ) để bạn xem trước. Khi bấm đúp lên biểu tượng thumbnail, ảnh sẽ được hiển thị như minh hoạ 3.36.

Minh hoạ 3.37. Xem ảnh bằng Konqueror

Để thay đổi tỷ lệ xem ảnh, cần thay đổi cách Konqueror render ảnh. Chọn lệnh View

=> View Mode => Image Viewer Part. Lệnh này hiển thị lại ảnh cho phép bạn thay đổi tỷ lệ thu phóng ảnh cũng như quay ảnh.

Minh hoạ 3.38. Thanh công cụ làm việc với ảnh của Konqueror

Bạn có thể mở ảnh bằng các trình chuyên nghiệp như The GIMP. Bấm chuột phải lên ảnh và chọn Open With..., tiếp là Other.... chọn ứng dụng để mở.

3.3.7 KMail

KMail là một trình quản trị email của KDE. Có giao diện đồ hoạ trực quan tương tự như Evolution cho phép gửi, nhận email. Để mở KMail, bấm Main Menu =>

Internet => More Internet Applications => KMail.

Cấu hình KMail, chọn Settings từ KMail,và bấm lên Configure KMail.

Cửa sổ Configure Mail Client gồm các mục: Identities, Network, Appearance,

Composer, Security, và Folders. Để gửi và nhận thư, bạn phải thiết lập Identities

Network. Xem thêm về KMail (Help => KMail Handbook) hoặc địa chỉ web

Minh hoạ 3.39. Cửa sổ KMail

3.3.8 Tuỳ biến KDE

KDE cho phép bạn cấu hình desktop và hệ thống. Mở KDE Control Center, bằng cách chọn Main Menu => Control Center.

KDE Components

Phần này cho phép bạn cấu hình trình quản trị tệp Konqueror và tuỳ biến một vài thao tác tệp. Bạn có thể gắn một số kiểu tệp với một số ứng dụng bạn muốn (ví dụ các tệp âm thanh mở bằng trình XMMS thay cho trình ngầm định).

Appearance & Themes

Thay đổi diện mạo desktop, hình font, biểu tượng, panel, hay chuột, bàn phím...

Regional & Accessibility

Thay đổi vị trí, ngôn ngữ,...

System Administration

Mục này cho giao diện cấu hình hệ thống nâng cao.

Web Browsing

Cấu hình trình duyệt web Konqueror như cache sizes, website cookies, plugins, proxy settings ...

3.3.9 Đăng xuất khỏi KDE

Có hai cách để logout khỏi KDE. Từ Main Menu, chọn Logout User, ở đó User là tên tài khoản của bạn. Để logout từ desktop, bấm chuột phải lên desktop và chọn

Logout User. Trong cả hai trường hợp thì màn hình Logout được mở như sau.

CHƯƠNG 4. LẬP TRÌNH HỆ THỐNG

Trong phần này, chúng ta sẽ tìm hiểu về môi trường phát triển UNIX dưới góc độ lập trình hệ thống nhằm hiểu rõ hơn về bản chất của hệ điều hành UNIX cũng như của hệ điều hành Linux.

4.1 MÔ HÌNH PHÂN TẦNG TRONG UNIX

Trong rất nhiều tài liệu hiện hành, hệ thống Unix được mô tả dưới dạng cây với các cành là hệ thống tệp được quản lý theo cơ chế phân cấp. Tuy nhiên mô hình này khó tiếp cận. Ở đây, chúng tôi giới thiệu một mô hình mới nhằm tiếp cận các chức năng của hệ thống Unix dễ dàng hơn đó là mô hình phân tầng. Mô hình này được chia làm 3 tầng chính, được biểu diễn bằng sơ đồ dưới đây :

Tầng lõi hệ thống UNIX bao gồm 3 thành phần chính : Phần mềm kiểm soát tiến trình xử lý.

Phần mềm xử lý hệ thống tệp. Phần mềm kiểm soát phần cứng.

Trong đó 2 phần đầu được viết bằng chương trình C. Phần thứ 3 liên quan đến phần cứng và nó còn phụ thuộc vào hệ thống cụ thể mà ta muốn xây dựng. Phần này có thể được viết bằng C hoặc ngôn ngữ Assembleur (hợp ngữ).

Giao diện giữa lõi và người sử dụng được thực hiện bởi tập hợp các lệnh gọi hệ thống mà chúng ta vẫn thường quen gọi đó là hàm nguyên thuỷ hay hàm hệ

TẦNG CAO

Chương trình của người sử dụng Chương trình shell

Đơn vị hệ thống Trình biên dịch C Thư viện lõi TẦNG CAO

Chương trình của người sử dụng Chương trình shell

Đơn vị hệ thống Trình biên dịch C Thư viện lõi

TẦNG TRUNG GIAN Lõi Unix

Phần mềm kiểm soát tiến trình xử lý Phần mềm xử lý hệ thống tệp Phần mềm kiểm soát phần cứng TẦNG TRUNG GIAN

Lõi Unix

Phần mềm kiểm soát tiến trình xử lý Phần mềm xử lý hệ thống tệp Phần mềm kiểm soát phần cứng

TẦNG THẤP

Tập hợp thiết bị vật lý cho việc cài đặt. TẦNG THẤP

Tập hợp thiết bị vật lý cho việc cài đặt.

Gọi hệ thống Hàm nguyên thủy

thống. Để thực hiện với một hàm nguyên thuỷ chúng ta phải can thiệp trực tiếp đến thư viện hệ thống chứ không phải từ lõi hệ thống. Tuy nhiên vẫn tuỳ vào một số phiên bản, lệnh gọi hệ thống có thể được thực hiện trực tiếp từ lõi, điều này rất ít phiên bản thiết kế theo trường hợp này.

Đơn vị hệ thống bao gồm những câu lệnh có chức năng kiểm tra hoặc tham chiếu đến môi trường hoạt động của Unix. Thư viện hệ thống của Unix cũng được viết bằng ngôn ngữ C. Hơn thế nữa, việc gọi các lệnh hệ thống hoàn toàn thực hiện bằng ngôn ngữ C.

Tóm lại một lập trình viên hệ thống Unix phải thông thạo những thứ sau : Lõi Unix

Những thư viện của Unix Trình biên dịch C Những thư việncủa C

4.2. NGÔN NGỮ C VÀ HỆ THỐNG UNIX

4.2.1 Sơ lược về ngôn ngữ C

a. Xuất xứ

Ngôn ngữ C do Kernighan và Ritchie sáng tạo năm 1978 tại Bell Laboratories, sau đó được phát triển không ngừng. Đây là ngôn ngữ chủ đạo để xây dựng phiên bản hệ điều hành Unix đầu tiên của Thompson trên máy tính mini PDPvới gần 12000 dòng lệnh C và khoảng 800 dòng lệnh hợp ngữ.

Từ nhiều năm cho đến nay, C được xem là một trong những ngôn ngữ lập trình vạn năng nhất và được sử dụng rộng rãi để giải quyết các bài toán khoa học kỹ thuật, cũng như ứng dụng trong xử lý đồ hoạ, ghép nối hệ thống, phát triển các chương trình dịch và các công cụ tiện ích khác.

b. Ưu điểm

– Ngôn ngữ có cấu trúc. – Tính ổn định cao.

– Sự mềm dẻo, tính khả chuyển (portability) cao giữa các hệ thống. – Tài liệu và thư viên C hiện có rất nhiều

– Cộng đồng người lập trình C rất đông, đặc biệt trên Internet

c. Cấu trúc

Chương trình C là tập hợp của nhiều cấu trúc khác nhau, trong đó gồm các thành phần chủ yếu sau đây:

Các câu lệnh điều kiện: if – then – else

Các câu lệnh chọn: switch – case

Các hàm (function), thủ tục (procedure) và đệ qui (iterative)

d. Ví dụ về chương trình C

1. L u ýư

Một chương trình C thông thường bao gồm 2 tệp. Một tệp chứa cấu hình, các biến, các hàm…được kết thúc bởi đuôi .h. Một tệp có đuôi mở rộng .c để cài đặt các hàm được khai báo trong tệp cùng tên có đuôi mở rộng .h.

Trong tệp có đuôi .c có thể khai báo nhiều tệp thư viện được chỉ định bở dấu <>. Và những tệp cấu hình xây dựng được chỉ định bởi dấu nháy “”.

Một chương trình C luôn bắt đầu bởi hàm main(), đây là điểm thực hiện đầu tiên của chương trình.

2. Xu t/nh pấ

Thư viện hỗ trợ cho việc xuất/nhập dữ liệu được đặt trong thư viện stdio.h với những luồng dữ liệu chuẩn sau:

stdin : Luồng dữ liệu chuẩn từ bàn phím (phục vụ cho việc nhập dữ liệu)

stdout: Luồng dữ liệu chuẩn ra màn hình (phục vụ việc xuất dữ liệu) – stderr: Luồng dữ liệu chuẩn lỗi ra màn hình (phục vụ việc báo lỗi)

3. Ví d 1ụ

printf (“Xin chao\n”);

fprintf (stdout,” Xin chao\n”);

printf (“Nhap du lieu\n”); scanf (“%d”,&var);

4. Ví d 2ụ

void Display (char *file) { FILE *fp = NULL; int ch; #include <stdio.h> #include “chuongtrinh.h” void main ()  {  Hienthi (); } void Hienthi () {  char *message = “Xin chao !”;  printf (“%s\n”,message); } #ifndef _CHUONGTRINH_H_ #define _CHUONGTRINH_H_ /* prototypes de fonctions */ void Hienthi (); #endif // _CHUONGTRINH_H_ Chuongtrinh.c Chuongtrinh.h

long compte = 0;

if ((fp = fopen (file, “r”)) == NULL) { fprintf (stderr,”Erreur d’ouverture du fichier %s\n”,fichier);

exit (1); }

while ((ch = getc (fp)) != EOF) { putc (ch, stdout);

compte ++: }

fclose (fp);

printf (“Le fichier %s contient %ld caracteres\n”,file,compte);

}

4.2.2 Hàm system

Hàm hệ thống system được đặt trong thư viện chuẩn của C, cho phép chúng ta gọi bất kỳ một câu lệnh nào của hệ thống Unix.

a. Ví dụ 1

int main() {

printf(``Files in Directory are: n'');

system(``ls -l''); } b. Ví dụ 2 Main() { system(« \

echo –n Thư mục hiện hành :;pwd ;\

echo thay đổi thư mục hiện hành :;cd /usr ;\ echo -n Thư mục hiện hành mới là :;pwd ;\ echo Thông tin về tệp trong thư mục fich:;ls –l > /home/ldhieu/fich ») ;n

}

c. Lưu ý

Hàm hệ thống system vẫn được sử dụng trong nhiều hệ điều hành khác, đặc biệt là các hệ điều hành họ Unix như Linux. Trong Unix khi gọi hàm system hệ thống sẽ tạo ra tiến trình con đảm nhận công việc này. Chúng ta sẽ bàn kỷ hơn về chủ đề này ở phần sau.

4.2.3 Các tham số hàm trong C

a. Cấu trúc

Trong các câu lệnh hệ thống của Unix, hầu hết đều có tham số kèm theo. Những tham số này chúng ta có thể thiết lập trong hàm main. Những tham số

này thường đóng vai trò phụ trong câu lệnh nhằm cụ thể hoá hay hạn chế từng chức năng trong câu lệnh.

Cấu trúc : Lenh thamso_1 thamso_2 thamso_n

b. Ví dụ 1

ls –l

Tham số đầu tiên trong hàm main tương ứng với tên lệnh, trong ví dụ trên là ls. Những tham số tiếp theo tương ứng với các đối số và tuỳ chọn được trình bày trong câu lệnh.

c. Ví dụ 2

int main( thamso 1, thamso2) int thamso1 ;

char * thamso2[] ; {

int i, j,k ;

printf(``Nhập hai số tự nhiên »); scanf(«%d %d «,&i,&j ) ; switch(*thamso2[1]) {case ‘d’ : k=i/j ; break ; case ‘m’ : k=i * j ; break ; default :

printf(``Không có thao tác nào thực hiện»); exit() ; } printf(« %d\n«,k ) return 0; }

Chúng ta lưu chương trình này dưới tên tệp prog.c, sau đó thực hiện biên dịch.

$cc prog.c $a.out Nhập hai số tự nhiên : 67 15 4 $ d. Hàm main

Cấu trúc của hàm main đầy đủ được viết như sau :

int main (int argc, char**argv)

Trong đó :

int argc : Số lượng các đối số trong chương trình.

char** argv : Bảng chuổi kí tự chứa các tham số.

Mỗi thành phần của bảng có kiểu con trỏ chỉ đến một đối tượng có kiểu char. Thành phần cuối cùng của bảng tương ứng với con trỏ null

argv[0] : Con trỏ chỉ đến câu lệnh.

argv[1] : Con trỏ chỉ đến tham số đầu tiên. argv[2] : Con trỏ chỉ đến tham số thứ 2. ----

argv[argc] : Con trỏ chỉ đến null.

e. Ví dụ 3 ls -l -t -R /usr/local/cours/ argc = 5 argv = “ls”, “-l”, “-t”, “-R”, “/usr/local/cours/” f. Ví dụ 4 Main() { int argc ; char *argv[] ; { puts(*++argv) ; return 0 ;} }

Nếu tệp được đặt tên coco.c, chúng ta sẽ có kết quả sau :

$cc –o coco coco.c $coco helolo

helolo

g. Ví dụ 5

#include <unistd.h>

int main (int argc, char **argv) { int c, argument_entier;

while ((c = getopt(argc, argv, "a:h")) != EOF) { extern char *optarg;

switch (c) { case 'a':

argument_entier = atoi (optarg); break; case 'h': Affiche_Aide () exit (0); break; } }

extern int optind; char *filename = NULL; if (optind<argc)

filename = argv[optind];

4.2.4 Những lệnh gọi hệ thống

Những lệnh gọi hệ thống là những câu lệnh can thiệp trực tiếp tới lõi thông qua ngôn ngữ C. Đối với việc thiết lập một số thành phần bổ sung khác chúng ta có

thể sử dụng ngôn ngữ khác như FORTRAN, tuy nhiên đây không phải là ngôn ngữ chuẩn của Unix.

Thông thường có 3 loại lệnh gọi hệ thống tương ứng với 3 chức năng chính của lõi.

- Lệnh gọi liên quan đến xuất/nhập ở mức thấp.

- Lệnh gọi quản lý bộ xử lý (tiến trình).

- Lệnh gọi quản lý tệp.

4.2.5 Dò lỗi

Trong thư viện hệ thống UNIX cung cấp nhiều hàm cho phép dò lỗi bằng cách trả về giá trị lỗi tương ứng, thông thường đó là giá trị -1. Những thông tin này được tìm thấy trong biến errono trong thư viện chuẩn C.

4.2.6 Biến errno

Trong trường hợp lỗi, biến này sẽ khởi tạo với một giá trị tương ứng với mã code (mã lỗi) , được đính kèm ở phần dưới.

a. Ví dụ #include<stdio.h> #include<math.h> { float y= -2.3, res ; res=log(y) ; printf(«log : %d|n« , errno) ; }

Lưu với tên tệp prog_erro.c ta sẽ có kết quả sau :

$cc prog_erro.c –lm $a.out

log : DOMIAN error log :33

$

b. Lưu ý

- Để sử dụng biến errno cần thiết phải khai báo thư viện <errno.h> - Biến này không chỉ khởi tạo khi có lỗi mà ngay cả trong lệnh gọi

hệ thống.

c. Bảng giá trị các mã lỗi

1 EPERM Không được cấp quyền xử lý

2 ENONET File này đã tồn tại

3 ESRCH Tiến trình này không tồn tại

4 EINTR Tín hiệu đã bị ngắt bởi lời gọi hệ thống 5 EIO Lỗi trong xuất/nhập dữ liệu

7 E2BIG Danh sách tham số quá dài

8 ENOEXEC Định dạng tệp không tương thích

9 EBADF File này không mở được

10 ECHILD Không phải tiến trình con (khi gọi hàm wait) 11 EAGAIN Không thể tạo tiến trình (khi gọi hàm fock)

12 ENOMEN Không đủ khoảng trống bộ nhớ

13 EACCES Không được cấp quyền vào tệp này

14 EFAULT Thiết bị vật lý không tương thích

15 ENOTBLK Không tồn tại chế độ khối (mode bloc), có thể dùng lệnh mount để chữa lỗi.

16 EBUSY Thiết bị hoặc nguồn không hiệu lực

17 EEXIST File không tồn tại, khi dùng lệnh link

18 EXDEV Hai tệp không thể thiết lập link được vi không tương thích thiết bị.

19 ENODEV Thiết bị vật lý không tồn tại (ví dụ khi đọc máy in)

20 ENOTDIR Không tồn tại thư mục trong tham số lời gọi 21 EISDIR Lỗi khi viết dữ liệu (vào thư mục)

22 EINVAL Các tham số của hàm không hợp lệ

23 ENFILE Không thể mở tệp này được(nên mở lại bằng hàm open).

24 EMFILE Mở quá nhiều tệp

25 ENOTTY Thiết bị này không tương thích

26 ETXTBSY Chương trình đang xử lý, không đọc, ghi được.

27 EFBIG Kích thước tệp quá lớn.

28 ENOSPC Khoảng trống đầy, không ghi thêm được nữa. 29 ESPIPE Không thể di chuyển vị trí (dùng trong lệnh

lseek)

30 EROFS Chí cho phép đọc

31 EMLINK Không thể link tệp được vì vượt quá số lượng max (tối đa 1000 link)

32 EPIPE Không có tiến trình nào được đọc

33 EDOM Tham số không hợp lệ

4.2.7 Xuất/nhập ỏ mức thấp

Các lệnh hệ thống về xuất/nhập được gọi chung là lệnh xuất/nhập ở mức thấp. Khác với các lệnh xử lý tệp, những lệnh xuất/nhập mức thấp không cần bộ đệm.

Sau đây là một số ví dụ.

a. Lệnh cat (không có đối số)

Cú pháp : cat

Chức năng : Cho phép nhập dữ liệu từ bàn phím, dữ liệu được gõ vào sẽ xuất hiện trên màn hình giống như lệnh echo.

Chương trình C dưới đây có thể thực hiện lệnh này : #define DIM 1024 main() { char tamp[DIM] ; int k ;

while ((k=read (0, tamp, sizeof(tamp)))>0 write (1, tam,k) ;

exit(0) ; }

Trong chương trình trên sử dụng hàm hệ thống read với 3 tham số.

Một phần của tài liệu Giáo trình sử dụng quản trị và lập trình UNIX LINUX (Trang 90)

Tải bản đầy đủ (DOC)

(158 trang)
w