SlideShare uma empresa Scribd logo
1 de 62
.: CÔNG NGHỆ LINUX :. Môn học: KHÓA 3 CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT QUA MẠNG ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Giảng viên:  TS. Tô Tuấn (Viện CNTT, BQP) Email: totuan4@yahoo.com Trợ lý kỹ thuật:  Nguyễn Vạn Phúc, Vũ Mạnh Cường
Chương 4:  Nhập môn lập trình Linux ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CITD - VNUHCM
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],Ý nghĩa Trình biên dịch Bộ phân tích tương thích  yacc  của UNIX Bison Hệ vỏ Shell hỗ trợ cơ chế dòng lệnh bash Trình soạn thảo văn bản GNU Emacs Trình quản lý mã nguồn và quản lý thư viện GNU make Trình gỡ lỗi gdb Trình biên dịch C++ g++ Trình biên dịch C gcc
[object Object],[object Object],[object Object],UNIX Bourne Shell Tcl / Tk SQL Smalltalk Scheme Python Prolog PostScript Perl Pascal Objective C Oberon Modula 3 Modula 2 Lisp JavaScript Java Icon Fortran Forth Eiffel C++ C Ada
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Đối với người quản trị hệ thống, có thêm một số đường dẫn trỏ đến thư mục  /sbin ,  /usr/sbin - Unix/Linux sử dụng dấu “ : ” để phân cách các đường dẫn trong biến môi trường  PATH , trong khi MS-DOS dùng dấu “ ; ” - Ví dụ: PATH = /bin: /user/bin: /usr/local/bin:.:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Windows Programming Environment  (WPE) ==  -----  -----  == Hình 4.1 Trình wpe trong chế độ Console
Windows Programming Environment  (WPE) ==  -----  -----  == Hình 4.2 Trình wpe trong chế độ X-Windows
- Sử dụng  gcc  (hoặc  cc ) để biên dịch như sau: # gcc helloworld.c -o helloworld # ./helloworld Hello World #
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ví dụ minh họa về thư viện liên kết trên Windows  ==  -----  -----  ==
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Các hàm trên được khai báo như sau: #include <dlfcn.h> void *dlopen (const char* lib_file, int mode); void *dlsym (void * handle, const char* funct_name); int dlclose (void *handle); - Hàm  dlopen()   yêu cầu đường dẫn  lib_file  tới thư viện “.so” cần nạp. - Hàm  dlsym()  yêu cầu con trỏ đến thư viện nạp và trả về trước đó bởi hàm  dlopen() - Hàm  dlclose()  giải phóng thư viện trỏ đến bởi  handle  do  dlopen()  nạp trước đó - Tham khảo  Ví dụ 4-6:   program2.c
[object Object],[object Object],[object Object],Kết thúc chương 4 Hẹn gặp lại buổi học kế
Chương 5:  Xử lý tập tin và thư mục ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CITD - VNUHCM
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Thực tế, thư mục trong Linux được xem như một tập tin có thuộc tính “ d ”. Hình 5.1 Hệ thống thư mục trong Linux Đĩa cứng 1 Đĩa cứng 2 usr etc home dev minhkhai soft book.doc office helps.txt
Hình 5.1.a Một cấu trúc thư mục trong Linux
[object Object],[object Object],[object Object],[object Object],[object Object]
Hình 5.2 Cách triệu gọi và truy xuất thiết bị phần cứng Ứng dụng (Application) stdio Library Lời gọi hệ thống (System Call) KERNEL Device Drivers Thiết bị phần cứng (Hardware Devices) gọi hàm Không gian người dùng (User Space) Không gian hệ thống (Kernel Space)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
5.3.1. Đóng mở tập tin - Sử dụng hàm  fopen() và fclose() - Ví dụ: /*Khai b á o c ác  b iế n con tr ỏ  t ới  c ấ u tr ú c FILE*/ FILE * f_read; FILE * f_write; FILE * f_readwrite; FILE * f_append; /*M ở  t ập tin  data.txt  để đọ c*/ f_read=fopen(“/home/ch12/data.txt”, “r”); if  (!f_read) {  /*Kh ô ng m ở   đượ c t ập tin */ perror(“Khong mo duoc file de doc...”); exit (1); }
/* M ở  t ập tin  logfile  trong th ư  m ụ c hi ện  h à nh  để  ghi. N ế u ch ưa có,  t ập tin mới được tạo;  N ế u  đã có,  n ội dung cũ bị xóa  */ f_write=fopen(“logfile.txt”, “w”); /* M ở  /usr/local/db/users  để   đọc và ghi  */ f_readwrite=fopen(“/usr/local/db/users”, “rw”); /* M ở  /var/adm/messages  để nối thêm dữ liệu vào cuối  */ f_append=fopen(“/var/adm/messages”, “a”); /*  Đóng tập tin đang mở  */ if  (!fclose(f_readwrite)) { perror(“Khong the dong file duoc...”); exit (1); }
5.3.2. Đọc từ   tập tin - Sau khi mở tập tin và có con trỏ đến cấu trúc FILE, có thể thực hiện việc đọc dữ liệu bằng nhiều hàm thư viện. - Ví dụ: int  c; char  buf[200]; c=fgetc(f_read); // Đọc 1 ký tự hoặc được EOF if  (fread(buf, 120, 1, f_read) != 1) { // Đọc 1 khối ký tự perror(“Không đọc được !”); } if  (feof(f_read)){ printf(“Gặp EOF !”); }
5.3.3. Ghi vào tập tin - Giả sử f_readwrite là con trỏ đến cấu trúc FILE đã được fopen() với chế độ ghi là “w”. - Ví dụ: int  c; char  buf[201]; // Ghi ký tự ‘a’ ra tập tin c=‘a’; fputc(f_readwrite); // Ghi một chuỗi ký tự ra tập tin  strcpy(buf, “Hello World !”); fputs(buf, f_readwrite); // Đẩy dữ liệu còn lại trong vùng đệm ra tập tin fflush(f_readwrite);
5.3.4. Di chuyển vị trí đọc/ghi trong tập tin - Dùng hàm fseek() phối hợp với ftell(). - Ví dụ: fseek(f_read, 20L, SEEK_SET); // Chuyển đến vị trí 20 fseek(f_read, 10L, SEEK_CUR); // Đi 10 vị trí tính từ vị trí hiện thời // Ghi nhớ vị trí hiện thời. Chuyển đến vị trí cách cuối file 50 byte // Ghi chuỗi Hello World ! kể từ vị trí đó, sau đó về chỗ cũ long old_position=ftell(f_readwrite); if  (fseek(f_readwrite, -50L, SEEK_END) < 0){ perror(“Không chuyển đến được !”); exit(1); } fputs(“Hello World !”, f_readwrite); fseek(f_readwrite, old_position, SEEK_SET)  ;
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
5.5. Xử lý thư mục Linux có các hàm riêng dùng để xử lý thư mục: #include <sys/types.h> #include <dirent.h> // Mở thư mục với kết quả là con trỏ tới cấu trúc DIR DIR *opendir(const char * name); // Đọc một đầu mục struct  dirent readdir(DIR *dirp); // Đóng thư mục int  closedir(DIR *dirp); // Vị trí hiện hành của con trỏ đầu mục long int  telldir(DIR *dirp);
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chương 6:  Tương tác với môi trường Linux ,[object Object],[object Object],[object Object],[object Object],CITD - VNUHCM
6.1. Đối số truyền cho chương trình 6.1.1. Phân tích đối số dòng lệnh Chuơng trình chính viết bằng C có thể chứa hàm main() với đặc tả: int  main(int argc, char *argv[]) Đối số trên dòng lệnh thường dùng để truyền thông tin từ ngoài vào: # args –i  –lrv  ‘Hi Linux’  –f “/data/vb.txt” Chương trình sau in ra tất cả các giá trị đối số mà hàm main() nhận được:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
6.1.2. Hàm getopt() Hữu ích cho việc phân tích đối số dòng lệnh. Ví dụ: getopt(argc, argv, “if:lr”); sẽ phân tích và xem –i, -l, -r, -f là các tùy chọn, trong đó –f có dữ liệu kèm theo. #include <stdio.h> #include <unistd.h> int  main(int argc, char *argv[]) {   int  opt;
  while  ((opt = getopt(argc, argv, &quot;if:lr&quot;)) != -1) {   switch (opt) { case  'i': case  'l': case  'r': printf(&quot;option: %c&quot;, opt);   break ;   case  'f': printf(&quot;filename: %s&quot;, optarg);   break ; case  ':': printf(&quot;option needs a value&quot;); break ;
case  '?': printf(&quot;unknown option: %c&quot;, optopt);   break ; } } for  (; optind < argc; optind++) printf(&quot;argument: %s&quot;, argv[optind]);   return (0); }
6.2. Biến môi trường Truy xuất và thiết lập biến môi trường bằng các hàm: #include <stdlib.h> char *getenv(const char *name); int putenv(const char *string); Trong đó, name chứa tên biến môi trường cần truy xuất, string chứa chuỗi theo mẫu: varname=value
6.3. Thời gian và ngày tháng - Lấy về giá trị thời gian ở cấp thấp (số giây kể từ 0 giờ 1970) bằng hàm time(): #include <time.h> time_t time(time_t *loc); Trong đó, loc là tham biến dùng nhận kết quả trả về của hàm - So sánh giữa 2 thời điểm bằng hàm difftime(): #include <time.h> double difftime(time_t  time1, time_t  time2);
- Hàm gmtime() dùng truy xuất ngày/tháng/năm và giờ cụ thể: #include <time.h> struct tm *gmtime(const time_t timeval); Ví dụ: #include <time.h> #include <stdio.h> int  main() {   struct  tm *tm_ptr;   time_t  the_time;
(void) time(&the_time); tm_ptr = gmtime(&the_time); printf(&quot;Raw time is %ld&quot;, the_time); printf(&quot;gmtime gives:&quot;); printf(&quot;date: %02d/%02d/%02d&quot;,    tm_ptr->tm_year, tm_ptr->tm_mon,    tm_ptr->tm_mday); printf(&quot;time: %02d:%02d:%02d&quot;, tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec); return (0); }
[object Object],[object Object],[object Object],Kết thúc chương 6 Hẹn gặp lại buổi học kế

Mais conteúdo relacionado

Mais procurados

Lesson 3 - Linux File System
Lesson 3 - Linux File SystemLesson 3 - Linux File System
Lesson 3 - Linux File SystemThang Man
 
Lesson 5 - Administering Linux System (1)
Lesson 5 - Administering Linux System (1)Lesson 5 - Administering Linux System (1)
Lesson 5 - Administering Linux System (1)Thang Man
 
Overview of Linux
Overview of LinuxOverview of Linux
Overview of LinuxThang Man
 
Lesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line EnvironmentLesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line EnvironmentThang Man
 
Hệ điều hành
Hệ điều hànhHệ điều hành
Hệ điều hànhĐấy Vợ
 
Hệ điều hành linux (1)
Hệ điều hành linux (1)Hệ điều hành linux (1)
Hệ điều hành linux (1)khung196
 
CHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNH
CHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNHCHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNH
CHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNHlaonap166
 
Cac lenh co_ban_linux
Cac lenh co_ban_linuxCac lenh co_ban_linux
Cac lenh co_ban_linuxgofriv
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)laonap166
 
Tóm tắt lệnh Ubuntu
Tóm tắt lệnh UbuntuTóm tắt lệnh Ubuntu
Tóm tắt lệnh UbuntuQuang Ngoc
 
Linux và mã nguồn mở
Linux và mã nguồn mởLinux và mã nguồn mở
Linux và mã nguồn mởNguyễn Anh
 
Cach su dung Ubuntu
Cach su dung UbuntuCach su dung Ubuntu
Cach su dung UbuntuKien Ma
 
Linux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvienLinux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvienasakebigone
 

Mais procurados (18)

Lesson 3 - Linux File System
Lesson 3 - Linux File SystemLesson 3 - Linux File System
Lesson 3 - Linux File System
 
Su dung linux shell
Su dung linux shellSu dung linux shell
Su dung linux shell
 
Linux+04
Linux+04Linux+04
Linux+04
 
Lesson 5 - Administering Linux System (1)
Lesson 5 - Administering Linux System (1)Lesson 5 - Administering Linux System (1)
Lesson 5 - Administering Linux System (1)
 
Overview of Linux
Overview of LinuxOverview of Linux
Overview of Linux
 
Lesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line EnvironmentLesson 2 - Install Linux & Command Line Environment
Lesson 2 - Install Linux & Command Line Environment
 
Linux LPI Bacis
Linux LPI BacisLinux LPI Bacis
Linux LPI Bacis
 
Hệ điều hành
Hệ điều hànhHệ điều hành
Hệ điều hành
 
Hệ điều hành linux (1)
Hệ điều hành linux (1)Hệ điều hành linux (1)
Hệ điều hành linux (1)
 
Su dung linux shell
Su dung linux shellSu dung linux shell
Su dung linux shell
 
CHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNH
CHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNHCHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNH
CHIA SẺ TÀI NGUYÊN TRONG LAN TRÊN NHIỀU HỆ ĐIỀU HÀNH
 
Cac lenh co_ban_linux
Cac lenh co_ban_linuxCac lenh co_ban_linux
Cac lenh co_ban_linux
 
Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)Linux Network Administration (LPI-1,LPI-2)
Linux Network Administration (LPI-1,LPI-2)
 
Tóm tắt lệnh Ubuntu
Tóm tắt lệnh UbuntuTóm tắt lệnh Ubuntu
Tóm tắt lệnh Ubuntu
 
Linux và mã nguồn mở
Linux và mã nguồn mởLinux và mã nguồn mở
Linux và mã nguồn mở
 
Cach su dung Ubuntu
Cach su dung UbuntuCach su dung Ubuntu
Cach su dung Ubuntu
 
Linux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvienLinux2 lap trinhshellchohocvien
Linux2 lap trinhshellchohocvien
 
3 he thong-file
3 he thong-file3 he thong-file
3 he thong-file
 

Destaque

Red hat enterprise_linux-5.5-release_notes-en-us
Red hat enterprise_linux-5.5-release_notes-en-usRed hat enterprise_linux-5.5-release_notes-en-us
Red hat enterprise_linux-5.5-release_notes-en-usDuong Hieu
 
Lesson 8 - Reviewing Basic Networking
Lesson 8 - Reviewing Basic NetworkingLesson 8 - Reviewing Basic Networking
Lesson 8 - Reviewing Basic NetworkingThang Man
 
Hướng dẫn tự học Linux
Hướng dẫn tự học LinuxHướng dẫn tự học Linux
Hướng dẫn tự học LinuxNguyễn Duy Nhân
 
OpenStack 101: Introduction & Technical Overview
OpenStack 101: Introduction & Technical OverviewOpenStack 101: Introduction & Technical Overview
OpenStack 101: Introduction & Technical OverviewThang Man
 
Tự học sử dụng Linux
Tự học sử dụng LinuxTự học sử dụng Linux
Tự học sử dụng LinuxVu Hung Nguyen
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in LinuxAnu Chaudhry
 
UNIX and Linux - an introduction by Mathias Homann
UNIX and Linux - an introduction by Mathias HomannUNIX and Linux - an introduction by Mathias Homann
UNIX and Linux - an introduction by Mathias HomannMathias Homann
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Scriptsbmguys
 
An Introduction to Linux
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linuxanandvaidya
 
Unix Operating System
Unix Operating SystemUnix Operating System
Unix Operating Systemsubhsikha
 

Destaque (13)

Red hat enterprise_linux-5.5-release_notes-en-us
Red hat enterprise_linux-5.5-release_notes-en-usRed hat enterprise_linux-5.5-release_notes-en-us
Red hat enterprise_linux-5.5-release_notes-en-us
 
Tu hoc su dung linux 2
Tu hoc su dung linux 2Tu hoc su dung linux 2
Tu hoc su dung linux 2
 
Lesson 8 - Reviewing Basic Networking
Lesson 8 - Reviewing Basic NetworkingLesson 8 - Reviewing Basic Networking
Lesson 8 - Reviewing Basic Networking
 
Hướng dẫn tự học Linux
Hướng dẫn tự học LinuxHướng dẫn tự học Linux
Hướng dẫn tự học Linux
 
OpenStack 101: Introduction & Technical Overview
OpenStack 101: Introduction & Technical OverviewOpenStack 101: Introduction & Technical Overview
OpenStack 101: Introduction & Technical Overview
 
Tự học sử dụng Linux
Tự học sử dụng LinuxTự học sử dụng Linux
Tự học sử dụng Linux
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
UNIX and Linux - an introduction by Mathias Homann
UNIX and Linux - an introduction by Mathias HomannUNIX and Linux - an introduction by Mathias Homann
UNIX and Linux - an introduction by Mathias Homann
 
Unix - An Introduction
Unix - An IntroductionUnix - An Introduction
Unix - An Introduction
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Script
 
An Introduction to Linux
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linux
 
Unix Operating System
Unix Operating SystemUnix Operating System
Unix Operating System
 
UNIX/Linux training
UNIX/Linux trainingUNIX/Linux training
UNIX/Linux training
 

Semelhante a Linux+03

tài liệu Mã nguồn mở Lap trình tren linux
tài liệu Mã nguồn mở  Lap trình tren linuxtài liệu Mã nguồn mở  Lap trình tren linux
tài liệu Mã nguồn mở Lap trình tren linuxThuyet Nguyen
 
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mởBài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mởMasterCode.vn
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake phplaonap166
 
Sinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hueSinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hueTuấn Nguyễn Văn
 
[C] giao trinh c dhbk - viet nhat
[C] giao trinh c   dhbk - viet nhat[C] giao trinh c   dhbk - viet nhat
[C] giao trinh c dhbk - viet nhatHoang Nguyen
 
Tìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTÓc Đỏ XuÂn
 
Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Thien Ta
 
Cc license-to-oer-may.2016
Cc license-to-oer-may.2016Cc license-to-oer-may.2016
Cc license-to-oer-may.2016nghia le trung
 
Lệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdfLệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdfTruongVanTuyen3
 
02 technical summary of linux distribution
02  technical summary of linux distribution02  technical summary of linux distribution
02 technical summary of linux distributionCơn Gió
 
Foss introduction-license-system
Foss introduction-license-systemFoss introduction-license-system
Foss introduction-license-systemnghia le trung
 
Phan2 chuong1 gioithieu_c
Phan2 chuong1 gioithieu_cPhan2 chuong1 gioithieu_c
Phan2 chuong1 gioithieu_cLy hai
 
Foss introduction-sep-2014
Foss introduction-sep-2014Foss introduction-sep-2014
Foss introduction-sep-2014nghia le trung
 

Semelhante a Linux+03 (20)

tài liệu Mã nguồn mở Lap trình tren linux
tài liệu Mã nguồn mở  Lap trình tren linuxtài liệu Mã nguồn mở  Lap trình tren linux
tài liệu Mã nguồn mở Lap trình tren linux
 
Os lab2
Os lab2Os lab2
Os lab2
 
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mởBài 2: Hệ điều hành và các ứng dụng mã nguồn mở
Bài 2: Hệ điều hành và các ứng dụng mã nguồn mở
 
Bao cao web cake php
Bao cao web cake phpBao cao web cake php
Bao cao web cake php
 
Python
PythonPython
Python
 
Sinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hueSinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hue
 
Lesson 1 lý thuyết
Lesson 1 lý thuyếtLesson 1 lý thuyết
Lesson 1 lý thuyết
 
[C] giao trinh c dhbk - viet nhat
[C] giao trinh c   dhbk - viet nhat[C] giao trinh c   dhbk - viet nhat
[C] giao trinh c dhbk - viet nhat
 
Phan 1 sv
Phan 1   svPhan 1   sv
Phan 1 sv
 
Tìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành androidTìm hiểu về hệ điều hành android
Tìm hiểu về hệ điều hành android
 
Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)
 
Cc license-to-oer-may.2016
Cc license-to-oer-may.2016Cc license-to-oer-may.2016
Cc license-to-oer-may.2016
 
Devel
DevelDevel
Devel
 
Lệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdfLệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdf
 
TỰ HỌC LPI 1
TỰ HỌC LPI 1 TỰ HỌC LPI 1
TỰ HỌC LPI 1
 
02 technical summary of linux distribution
02  technical summary of linux distribution02  technical summary of linux distribution
02 technical summary of linux distribution
 
Foss introduction-license-system
Foss introduction-license-systemFoss introduction-license-system
Foss introduction-license-system
 
Phan2 chuong1 gioithieu_c
Phan2 chuong1 gioithieu_cPhan2 chuong1 gioithieu_c
Phan2 chuong1 gioithieu_c
 
Foss introduction-sep-2014
Foss introduction-sep-2014Foss introduction-sep-2014
Foss introduction-sep-2014
 
Subversion Seminar [2010]
Subversion Seminar [2010]Subversion Seminar [2010]
Subversion Seminar [2010]
 

Linux+03

  • 1. .: CÔNG NGHỆ LINUX :. Môn học: KHÓA 3 CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT QUA MẠNG ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Giảng viên: TS. Tô Tuấn (Viện CNTT, BQP) Email: totuan4@yahoo.com Trợ lý kỹ thuật: Nguyễn Vạn Phúc, Vũ Mạnh Cường
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. - Đối với người quản trị hệ thống, có thêm một số đường dẫn trỏ đến thư mục /sbin , /usr/sbin - Unix/Linux sử dụng dấu “ : ” để phân cách các đường dẫn trong biến môi trường PATH , trong khi MS-DOS dùng dấu “ ; ” - Ví dụ: PATH = /bin: /user/bin: /usr/local/bin:.:
  • 12.
  • 13. Windows Programming Environment (WPE) ==  -----  -----  == Hình 4.1 Trình wpe trong chế độ Console
  • 14. Windows Programming Environment (WPE) ==  -----  -----  == Hình 4.2 Trình wpe trong chế độ X-Windows
  • 15. - Sử dụng gcc (hoặc cc ) để biên dịch như sau: # gcc helloworld.c -o helloworld # ./helloworld Hello World #
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. Ví dụ minh họa về thư viện liên kết trên Windows ==  -----  -----  ==
  • 26.
  • 27. - Các hàm trên được khai báo như sau: #include <dlfcn.h> void *dlopen (const char* lib_file, int mode); void *dlsym (void * handle, const char* funct_name); int dlclose (void *handle); - Hàm dlopen() yêu cầu đường dẫn lib_file tới thư viện “.so” cần nạp. - Hàm dlsym() yêu cầu con trỏ đến thư viện nạp và trả về trước đó bởi hàm dlopen() - Hàm dlclose() giải phóng thư viện trỏ đến bởi handle do dlopen() nạp trước đó - Tham khảo Ví dụ 4-6: program2.c
  • 28.
  • 29.
  • 30.
  • 31. - Thực tế, thư mục trong Linux được xem như một tập tin có thuộc tính “ d ”. Hình 5.1 Hệ thống thư mục trong Linux Đĩa cứng 1 Đĩa cứng 2 usr etc home dev minhkhai soft book.doc office helps.txt
  • 32. Hình 5.1.a Một cấu trúc thư mục trong Linux
  • 33.
  • 34. Hình 5.2 Cách triệu gọi và truy xuất thiết bị phần cứng Ứng dụng (Application) stdio Library Lời gọi hệ thống (System Call) KERNEL Device Drivers Thiết bị phần cứng (Hardware Devices) gọi hàm Không gian người dùng (User Space) Không gian hệ thống (Kernel Space)
  • 35.
  • 36. 5.3.1. Đóng mở tập tin - Sử dụng hàm fopen() và fclose() - Ví dụ: /*Khai b á o c ác b iế n con tr ỏ t ới c ấ u tr ú c FILE*/ FILE * f_read; FILE * f_write; FILE * f_readwrite; FILE * f_append; /*M ở t ập tin data.txt để đọ c*/ f_read=fopen(“/home/ch12/data.txt”, “r”); if (!f_read) { /*Kh ô ng m ở đượ c t ập tin */ perror(“Khong mo duoc file de doc...”); exit (1); }
  • 37. /* M ở t ập tin logfile trong th ư m ụ c hi ện h à nh để ghi. N ế u ch ưa có, t ập tin mới được tạo; N ế u đã có, n ội dung cũ bị xóa */ f_write=fopen(“logfile.txt”, “w”); /* M ở /usr/local/db/users để đọc và ghi */ f_readwrite=fopen(“/usr/local/db/users”, “rw”); /* M ở /var/adm/messages để nối thêm dữ liệu vào cuối */ f_append=fopen(“/var/adm/messages”, “a”); /* Đóng tập tin đang mở */ if (!fclose(f_readwrite)) { perror(“Khong the dong file duoc...”); exit (1); }
  • 38. 5.3.2. Đọc từ tập tin - Sau khi mở tập tin và có con trỏ đến cấu trúc FILE, có thể thực hiện việc đọc dữ liệu bằng nhiều hàm thư viện. - Ví dụ: int c; char buf[200]; c=fgetc(f_read); // Đọc 1 ký tự hoặc được EOF if (fread(buf, 120, 1, f_read) != 1) { // Đọc 1 khối ký tự perror(“Không đọc được !”); } if (feof(f_read)){ printf(“Gặp EOF !”); }
  • 39. 5.3.3. Ghi vào tập tin - Giả sử f_readwrite là con trỏ đến cấu trúc FILE đã được fopen() với chế độ ghi là “w”. - Ví dụ: int c; char buf[201]; // Ghi ký tự ‘a’ ra tập tin c=‘a’; fputc(f_readwrite); // Ghi một chuỗi ký tự ra tập tin strcpy(buf, “Hello World !”); fputs(buf, f_readwrite); // Đẩy dữ liệu còn lại trong vùng đệm ra tập tin fflush(f_readwrite);
  • 40. 5.3.4. Di chuyển vị trí đọc/ghi trong tập tin - Dùng hàm fseek() phối hợp với ftell(). - Ví dụ: fseek(f_read, 20L, SEEK_SET); // Chuyển đến vị trí 20 fseek(f_read, 10L, SEEK_CUR); // Đi 10 vị trí tính từ vị trí hiện thời // Ghi nhớ vị trí hiện thời. Chuyển đến vị trí cách cuối file 50 byte // Ghi chuỗi Hello World ! kể từ vị trí đó, sau đó về chỗ cũ long old_position=ftell(f_readwrite); if (fseek(f_readwrite, -50L, SEEK_END) < 0){ perror(“Không chuyển đến được !”); exit(1); } fputs(“Hello World !”, f_readwrite); fseek(f_readwrite, old_position, SEEK_SET) ;
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49. 5.5. Xử lý thư mục Linux có các hàm riêng dùng để xử lý thư mục: #include <sys/types.h> #include <dirent.h> // Mở thư mục với kết quả là con trỏ tới cấu trúc DIR DIR *opendir(const char * name); // Đọc một đầu mục struct dirent readdir(DIR *dirp); // Đóng thư mục int closedir(DIR *dirp); // Vị trí hiện hành của con trỏ đầu mục long int telldir(DIR *dirp);
  • 50.
  • 51.
  • 52.
  • 53. 6.1. Đối số truyền cho chương trình 6.1.1. Phân tích đối số dòng lệnh Chuơng trình chính viết bằng C có thể chứa hàm main() với đặc tả: int main(int argc, char *argv[]) Đối số trên dòng lệnh thường dùng để truyền thông tin từ ngoài vào: # args –i –lrv ‘Hi Linux’ –f “/data/vb.txt” Chương trình sau in ra tất cả các giá trị đối số mà hàm main() nhận được:
  • 54.
  • 55. 6.1.2. Hàm getopt() Hữu ích cho việc phân tích đối số dòng lệnh. Ví dụ: getopt(argc, argv, “if:lr”); sẽ phân tích và xem –i, -l, -r, -f là các tùy chọn, trong đó –f có dữ liệu kèm theo. #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int opt;
  • 56. while ((opt = getopt(argc, argv, &quot;if:lr&quot;)) != -1) { switch (opt) { case 'i': case 'l': case 'r': printf(&quot;option: %c&quot;, opt); break ; case 'f': printf(&quot;filename: %s&quot;, optarg); break ; case ':': printf(&quot;option needs a value&quot;); break ;
  • 57. case '?': printf(&quot;unknown option: %c&quot;, optopt); break ; } } for (; optind < argc; optind++) printf(&quot;argument: %s&quot;, argv[optind]); return (0); }
  • 58. 6.2. Biến môi trường Truy xuất và thiết lập biến môi trường bằng các hàm: #include <stdlib.h> char *getenv(const char *name); int putenv(const char *string); Trong đó, name chứa tên biến môi trường cần truy xuất, string chứa chuỗi theo mẫu: varname=value
  • 59. 6.3. Thời gian và ngày tháng - Lấy về giá trị thời gian ở cấp thấp (số giây kể từ 0 giờ 1970) bằng hàm time(): #include <time.h> time_t time(time_t *loc); Trong đó, loc là tham biến dùng nhận kết quả trả về của hàm - So sánh giữa 2 thời điểm bằng hàm difftime(): #include <time.h> double difftime(time_t time1, time_t time2);
  • 60. - Hàm gmtime() dùng truy xuất ngày/tháng/năm và giờ cụ thể: #include <time.h> struct tm *gmtime(const time_t timeval); Ví dụ: #include <time.h> #include <stdio.h> int main() { struct tm *tm_ptr; time_t the_time;
  • 61. (void) time(&the_time); tm_ptr = gmtime(&the_time); printf(&quot;Raw time is %ld&quot;, the_time); printf(&quot;gmtime gives:&quot;); printf(&quot;date: %02d/%02d/%02d&quot;, tm_ptr->tm_year, tm_ptr->tm_mon, tm_ptr->tm_mday); printf(&quot;time: %02d:%02d:%02d&quot;, tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec); return (0); }
  • 62.