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 Konqueror là navigation 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 và
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ố.