Tải bản đầy đủ (.pdf) (69 trang)

Báo cáo bài tập lớn lập trình nhân linux chương 1 lập trình shell

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.47 MB, 69 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN
LẬP TRÌNH NHÂN LINUX

Giảng viên hướng dẫn:

TS. Phạm Văn Hưởng

Sinh viên thực hiện:

Trương Quốc Quân – CT030440
Nguyễn Việt Tùng – CT030454
Phạm Thị Dung – CT030409

Hà Nội, 2022


MỤC LỤC
CHƯƠNG 1. Lập trình shell.........................................................................................9
1.1. File management................................................................................................9
1.1.1. Phân tích thiết kế.........................................................................................9
1.1.2. Thực thi..................................................................................................... 11
1.2. Auto install and uninstall..................................................................................13
1.2.1. Phân tích thiết kế.......................................................................................13
1.2.2. Thực thi..................................................................................................... 14
1.3. Task management............................................................................................. 15
1.3.1. Phân tích thiết kế.......................................................................................15
1.3.2. Thực thi..................................................................................................... 16
1.4. Time management............................................................................................19


1.4.1. Phân tích thiết kế.......................................................................................19
1.4.2. Thực thi..................................................................................................... 20
CHƯƠNG 2. Lập trình C............................................................................................23
2.1. File management.............................................................................................. 23
2.1.1. Phân tích thiết kế.......................................................................................23
2.1.2. Thực thi..................................................................................................... 24
2.2. Network management......................................................................................28
2.2.1. Phân tích thiết kế.......................................................................................28
2.2.2. Thực thi..................................................................................................... 29
2.3. Process management........................................................................................30
2.3.1. Phân tích thiết kế.......................................................................................30
2.3.2. Thực thi..................................................................................................... 31
2.4. Socket management..........................................................................................35
2.4.1. Phân tích thiết kế.......................................................................................35
2.4.2. Thực thi..................................................................................................... 37


CHƯƠNG 3. LẬP TRÌNH VÀ TÍCH HỢP KERNEL................................................43
3.1. Tổng quan........................................................................................................ 43
3.2. Macro...............................................................................................................45
3.3. Phần bài tập...................................................................................................... 45
CHƯƠNG 4. Memory mapping..................................................................................59
4.1. Tổng quan........................................................................................................ 59
4.2. Các struct được sử dụng cho quá trình ánh xạ bộ nhớ......................................60
4.2.1. Struct page.................................................................................................60
4.2.2. Struct vm_area_struct................................................................................61
4.2.3. Struct mm_struct.......................................................................................62
4.3. Ánh xạ bộ nhớ trong driver thiết bị..................................................................62
4.4. Phần thực hành.................................................................................................64
4.4.1. Ánh xạ bộ nhớ vật lý liên tục tới không gian người dùng..........................65

4.4.2. Ánh xạ bộ nhớ vật lý không liệ tục tới không gian người dùng.................66
4.4.3. Các thao tác đọc ghi trong vùng nhớ đã ánh xạ.........................................67
4.4.4. Hiển thị vùng nhớ đã ánh xạ sử dụng procfs.............................................67
4.5. Hướng dẫn thiết lập hệ thống...........................................................................69
4.5.1. Thiết lập hệ thống máy ảo và lấy khung từ github.....................................69
4.5.2. Đảm bảo các dependencies cho máy.........................................................71
4.5.3. Sản sinh khung xương mã – khởi động máy ảo qemu...............................72


DANH MỤC HÌNH VẼ
Hình 1.1: sơ đồ usecase mơ tả các chức năng trong file management...........................9
Hình 1.2: Biểu đồ usecase chức năng auto install và uninstall....................................13
Hình 1.3: Sơ đồ usecase biểu thị task management.....................................................15
Hình 1.4: Biểu đồ usecase chức năng task management.............................................19
Hình 2.1: Usecase file management trong lập trình C.................................................23
Hình 2.2: Usecase network management trong lập trình C.........................................28
Hình 2.3: Usecase process management trong lập trình C..........................................31
Hình 2.4: Usecase socket management ở trong lập trình C.........................................35
Hình 3.1: Mơ tả nhân linux.........................................................................................43
Hình 3.2: Lệnh lsmod.................................................................................................. 44
Hình 3.3:Lệnh insmod................................................................................................. 44
Hình 3.4: Lệnh modinfo.............................................................................................. 44
Hình 3.5: Lệnh rmmod................................................................................................ 45
Hình 3.6: Makefile để build module nhân...................................................................54
Hình 3.7: Biên dịch module nhân................................................................................54
Hình 3.8:Choice = 1 (factory).....................................................................................55
Hình 3.9: Choice = 2 (matadd)....................................................................................55
Hình 3.10: Choice = 3 (matnul)..................................................................................56
Hình 3.11: Choice = 4 (PrimeBetween)......................................................................56
Hình 3.12: Choice = 5 (SmallerNumInMatrix)...........................................................57

Hình 3.13: Choice = 6 (NumdivisibleByMatrix).........................................................57
Hình 3.14: Choice = 7 (PrimeOfMatrix).....................................................................58
Hình 4.1: Cấu trúc địa chỉ...........................................................................................59
Hình 4.2: Virtual memory...........................................................................................60
Hình 4.3: Nội dung file maps......................................................................................61
Hình 4.4: Ảnh minh hoạ lỗi khơng tương thích các thư viện 32bit.............................70


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

Hình 4.5: Kết quả thực thi chính xác...........................................................................74

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

DANH MỤC BẢNG
Bảng 1.1: Mô tả chức năng list file...............................................................................9
Bảng 1.2: Mô tả chức năng create file.........................................................................10
Bảng 1.3: Mô tả chức năng remove file......................................................................10
Bảng 1.4: Mô tả chức năng show file..........................................................................10
Bảng 1.5: Mô tả chức năng edit file............................................................................10
Bảng 1.6: Mô tả chức năng đổi tên files......................................................................10
Bảng 1.7: Mô tả chức năng Copy file..........................................................................11
Bảng 1.8: Mô tả chức năng auto install.......................................................................13
Bảng 1.9: Mô tả chức năng auto uninstall...................................................................14
Bảng 1.10: Mô tả chức năng list của task management...............................................16
Bảng 1.11: Mô tả chức năng create của task management..........................................16
Bảng 1.12: Mô tả chức năng remove của task management........................................16

Bảng 1.13: Mô tả chức năng edit của task management..............................................16
Bảng 1.14: Mô tả chức năng info................................................................................19
Bảng 1.15: Mô tả chức năng thay đổi giờ hệ thống.....................................................19
Bảng 1.16: Mô tả chức năng thay đổi ngày tháng trong hệ thống...............................20
Bảng 1.17: Mô tả chức năng tự động cập nhật thời gian hệ thống..............................20
Bảng 2.1: Mô tả chức năng list file trong lập trình C..................................................23
Bảng 2.2: Mơ tả chức năng create file ở trong lập trình C...........................................24
Bảng 2.3: Mơ tả chức nưng remove file ở trong lập trình C........................................24
Bảng 2.4: Mơ tả chức năng show file trong lập trình C...............................................24
Bảng 2.5: Mơ tả list deveice trong lập trình C.............................................................29
Bảng 2.6: Mơ tả chức năng list process ở trong lập trình C.........................................31
Bảng 2.7: Mô tả chức năng kill process ở trong lập trình C........................................31
Bảng 2.8: Mơ tả list tcp ở trong lập trình C.................................................................35
Bảng 2.9: Mơ tả list udp ở trong lập trình C................................................................35

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

Bảng 2.10: Mơ tả list raw ở trong lập trình C..............................................................36
Bảng 2.11: Mơ tả list unix ở trong lập trình C.............................................................36
Bảng 2.12: Mơ tả list tcp6 ở trong lập trình C.............................................................36
Bảng 2.13: Mơ tả list udp6 ở trong lập trình C............................................................36
Bảng 2.14: Mơ tả list raw6 ở trong lập trình C............................................................37

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66


DANH MỤC CODE
Code 1.1: Code thực thi file management...................................................................13
Code 1.2: Code thực thi auto install and uninstall.......................................................15
Code 1.3: Code thực thi task management..................................................................18
Code 1.4: Code thực thi time management.................................................................22
Code 2.1: Code thực thi file management trong C......................................................28
Code 2.2: Code thực thi network management trong lập trình C................................30
Code 2.3: Code thực thi process management ở trong lập trình C..............................34
Code 2.4: Code thực thi socket management ở trong lập trình C................................42

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

CHƯƠNG 1. Lập trình shell
1.1. File management
1.1.1. Phân tích thiết kế
Đối với chức năng file management, chúng em đi tìm hiểu và phân tích ra bảy chức
năng chính liên quan đến quản lý file bao gồm:

Hình 1.1: sơ đồ usecase mô tả các chức năng trong file management

Chức năng

List file

Mô tả


Chức năng này sẽ tiến hành thực hiện hiển thị tất cả các file
và thư mục có trong folder hiện tại.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình ls ở trong linux.
Bảng 1.1: Mô tả chức năng list file

Chức năng

Create file

Mô tả

Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện
tại và sử dụng tên được truyền vào làm tên file.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình touch ở trong
linux
Bảng 1.2: Mô tả chức năng create file

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

Chức năng


Remove file

Mơ tả

Chức năng này sẽ tiến hành xố file ở trong thư mục hiện
tại, tên file xoá sẽ được truyền vào như là một arument.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình rm ở trong linux
Bảng 1.3: Mô tả chức năng remove file

Chức năng

Show file

Mô tả

Chức năng này sẽ tiến hành hiển thị nội dung của file lên
console.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình cat ở trong
linux
Bảng 1.4: Mơ tả chức năng show file

Chức năng

Edit file


Mô tả

Chức năng này sẽ tiến hành mở trình soạn thảo trên file,
cho phép thực hiện chỉnh sửa nội dung file.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình vim ở trong
linux.
Bảng 1.5: Mơ tả chức năng edit file

Chức năng

Rename file

Mô tả

Chức năng này sẽ tiến hành đổi tên file.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình mv ở trong
linux.
Bảng 1.6: Mơ tả chức năng đổi tên files

Chức năng

Copy file


Mô tả

Chức năng này sẽ tiến hành copy file bất kỳ được chỉ định
bằng tên file ở trong thư mục hiện tại và copy sang một thư
mục khác.

Cách thực hiện

Thực hiện bằng cách sử dụng chương trình mv ở trong
linux.
Bảng 1.7: Mơ tả chức năng Copy file

1.1.2. Thực thi
#!/bin/sh
command=$1
if [ $command = "" ]

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

then echo "chua nhap chuc nang"
fi
# file management
if [ $command = "list" ]
then
ls -la
fi
if [ $command = "create-file" ]

then
if [ $2 = "" ]
then echo "chua co ten file"
else touch $2
fi
fi
if [ $command = "remove-file" ]
then
if [ $2 = "" ]
then echo "chua co ten file"
else rm -rf $2
fi
fi
if [ $command = "show-file" ]
then
if [ $2 = "" ]
then echo "chua co ten file"
else less $2
fi
fi
if [ $command = "edit-file" ]
then
if [ $2 = "" ]
then echo "chua co ten file"

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66


else vim $2
fi
fi
if [ $command = "rename-file" ]
then
if [ $2 = "" -o $3 = "" ]
then echo "chua nhap ten file va ten file moi"
else mv $2 $3
fi
fi
if [ $command = "copy-file" ]
then
if [ $2 = "" -o $3 = "" ]
then echo "chua nhap ten file va file dich"
else cp $2 $3
fi
fi
Code 1.1: Code thực thi file management

1.2. Auto install and uninstall
1.2.1. Phân tích thiết kế
Đối với chức năng auto install and uninstall, chúng em đi xây dựng hai chương trình
đó là install và uninstall.

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

Hình 1.2: Biểu đồ usecase chức năng auto install và uninstall


Chức năng

Install

Mô tả

Chức năng install sẽ tiến hành đọc nội dung của file input.txt
và cài đặt tất cả các package được liệt kê ở trong file.

Cách thực hiện

Đọc từng dòng tên các phần mềm được liệt kê ở trong file
input.txt, sau đó dùng lệnh sudo apt-get với cờ -y để tiến
hành cài đặt tất cả các gói.
Bảng 1.8: Mơ tả chức năng auto install

Chức năng

Uninstall

Mô tả

Chức năng uninstall sẽ tiến hành đọc nội dung của file
input.txt và gỡ cài đặt tất cả các chương trình được liệt kê

Cách thực hiện

Đọc từng dòng tên các phần mềm được liệt kê ở trong file
input.txt, sau đó dùng lệnh sudo apt-get purge với cờ -y để

tiến hành cài đặt tất cả các gói.
Bảng 1.9: Mô tả chức năng auto uninstall

1.2.2. Thực thi
#!/bin/sh
command=$1
if [ -z $command ]
then echo 'Chua nhap chuc nang'
fi
if [ $command = "install" ]
then
if [ `whoami` != "root" ]
then
echo 'Ban can phai chay lenh sudo de thay doi he
thong'
exit $E_NOTROOT
fi
cat input.txt | xargs sudo apt-get -y install
fi
if [ $command = "uninstall" ]

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

then
if [ `whoami` != "root" ]
then
echo 'Ban can phai chay lenh sudo de thay doi he

thong'
exit $E_NOTROOT
fi
cat input.txt | xargs sudo apt-get -y purge
fi
Code 1.2: Code thực thi auto install and uninstall

1.3. Task management
1.3.1. Phân tích thiết kế
Đối với task management chúng em tiến hành phân tích ra bốn chức năng lần lượt là
liệt kê danh sách các task được lập lịch, tạo lập lịch tiến trình, xố tất cả các lịch đã
lập và cuối cùng là sử đổi lịch tiến trình.

Hình 1.3: Sơ đồ usecase biểu thị task management

Chức năng

List

Mô tả

Chức năng list sẽ tiến hành liệt kê những tiến trình đã được
lập lịch bằng crontab.

Cách thực hiện

Sử dụng chương trình crontab để hiển thị danh sách các tiến
trình được lập lịch.

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99



37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

Bảng 1.10: Mô tả chức năng list của task management

Chức năng

Create

Mô tả

Chức năng create sẽ tiến hành tạo lập lịch tiến trình tuỳ
thuộc vào thơng tin người dùng nhập vào.

Cách thực hiện

Sử dụng chương trình crontab để tạo lập lịch tiến trình
Bảng 1.11: Mơ tả chức năng create của task management

Chức năng

Remove

Mơ tả

Chức năng remove sẽ xố tất cả những task đã được lập lịch.

Cách thực hiện


Sử dụng chương trình crontab để xố tất cả những tiến trình
đã được lập lịch.
Bảng 1.12: Mô tả chức năng remove của task management

Chức năng

Edit

Mô tả

Chức năng edit sẽ cho phép thực hiện chỉnh sửa những tiến
trình đã được lập lịch.

Cách thực hiện

Sử dụng chương trình crontab và text editor để thực hiện
chỉnh sửa nội dung lập lịch.
Bảng 1.13: Mô tả chức năng edit của task management

1.3.2. Thực thi
#!/bin/sh
command=$1
if [ -z $command ]
then echo "Chua nhap chuc nang"
fi
if [ $command = "list" ]
then
crontab -l
fi
if [ $command = "create" ]

then
echo "Xin hay nhap doan lenh ban muon lap lich"
read order

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

echo "Gio ban se nhap gio va phut de chay."
echo "Hay nhap gio"
read hour
echo "Hay nhap phut"
read min
echo "Gio ban can nhap ngay tac vu chay hang thang."
echo "Neu ban muon chay tac vu hang ngay, hay nhap
*"
echo "Neu ban muon chon ngay rieng le, hay nhap cac
ngay ban mong muon, phan cach boi dau \",\""
read day
echo "Gio ban can nhap thang tac vu ma tac vu chay."
echo "Neu ban muon tac vu chay hang thang, hay nhap
*"
echo "Neu ban muon chon thang rieng le, hay nhap cac
thang ban mong muon, phan cach boi dau \",\""
read month
echo "Gio ban can nhap ngay tac vu chay hang tuan."
echo "Neu ban muon chay tac vu hang ngay, hay nhap
*"
echo "Neu ban muon chon thu rieng le, hay nhap cac

thu ban mong muon, phan cach boi dau \",\""
echo "Xin nho rang gia tri 0 la Chu nhat"
read dow
echo "Ban co chac la ban muon thuc hien thao tac nay
khong?"
read confirmation
if [ $confirmation = 'Y' ]
then
echo "$min $hour $day $month $dow
$order" >> "input.txt"
crontab -l -u $LOGNAME | cat "input.txt" | crontab -u $LOGNAME rm -f "input.txt"
else echo "Aborted\n"

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

fi
fi
if [ $command = "remove-all" ]
then
crontab -r
fi
if [ $command = "edit" ]
then
crontab -e
fi
Code 1.3: Code thực thi task management


1.4. Time management
1.4.1. Phân tích thiết kế
Chương trình time management được thiết kế thành bốn chức năng con bao gồm: hiện
thông tin thời gian, cài đặt giờ, cài đặt ngày và tự động cập nhật ngày giờ.

Hình 1.4: Biểu đồ usecase chức năng task management

Chức năng

Info

Mô tả

Chức năng info sẽ hiển thị thời gian ngày tháng của hệ thống
cũng như múi giờ.

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

Cách thực hiện

Sử dụng chương trình date để thực hiện xem giờ của hệ
thống.
Bảng 1.14: Mô tả chức năng info

Chức năng

Hour


Mô tả

Chức năng hour được sử dụng để cập nhật lại thời gian giờ
phút giây ở trong hệ thống.

Cách thực hiện

Sử dụng chương trình date để thực hiện sửa giờ ở trong hệ
thống.
Bảng 1.15: Mô tả chức năng thay đổi giờ hệ thống

Chức năng

Date

Mô tả

Chức năng hour được sử dụng để cập nhật lại thời gian ngày
tháng năm ở trong hệ thống.

Cách thực hiện

Sử dụng chương trình date để thực hiện sửa ngày tháng năm
ở trong hệ thống.
Bảng 1.16: Mô tả chức năng thay đổi ngày tháng trong hệ thống

Chức năng

Automatic


Mô tả

Chức năng automatic được sử dụng để tự động cập nhật lại
thời gian của hệ thống

Cách thực hiện

Sử dụng chương trình npdate để thực hiện tự động cập nhật
lại thời gian của hệ thống.
Bảng 1.17: Mô tả chức năng tự động cập nhật thời gian hệ thống

1.4.2. Thực thi
#!/bin/sh
command=$1
# if [ `whoami` != "root" ]
#
#
gian'

then

#

echo 'Ban can phai chay lenh sudo de thay doi thoi
exit $E_NOTROOT

# fi
if [ -z $command ]
then echo "Chua nhap chuc nang"

fi

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

if [ $command = "info" ]
then TZ="Asia/Ho_Chi_Minh" date
fi
if [ $command = "set-hour" ]
then
if [ `whoami` != "root" ]
then
echo 'Ban can phai chay lenh sudo de thay doi
thoi gian'
exit $E_NOTROOT
fi
echo "Xin hay nhap gio theo dinh dang hh:mm:ss?"
read new_time
date +%T -s $new_time
fi
if [ $command = "set-date" ]
then
if [ `whoami` != "root" ]
then
echo 'Ban can phai chay lenh sudo de thay doi
thoi gian'
exit $E_NOTROOT
fi

echo "Xin hay nhap ngay theo dinh dang yyyymmdd?"
read new_time
date +%Y%m%d -s $new_time
fi
if [ $command = "automatic" ]
then
if [ `whoami` != "root" ]
then
echo 'Ban can phai chay lenh sudo de thay doi
thoi gian'

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

exit $E_NOTROOT
fi
echo "Thoi gian dang duoc cap nhat theo server cua
Microsoft..."
ntpdate -4 time.windows.com
fi
Code 1.4: Code thực thi time management

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

CHƯƠNG 2. Lập trình C

2.1. File management
2.1.1. Phân tích thiết kế
Đối với chức năng file management, chúng em đi tìm hiểu và phân tích ra bảy chức
năng chính liên quan đến quản lý file bao gồm:

Hình 2.5: Usecase file management trong lập trình C

Chức năng

List file

Mơ tả

Chức năng này sẽ tiến hành thực hiện hiển thị tất cả các file
và thư mục có trong folder hiện tại.

Cách thực hiện

Sử dụng hàm diropen ở trong thư viện <dirent.h> để thực
hiện đọc hết các file và folder trong thư mục được trỏ tới,
tiếp theo sử dụng struct dirent để có thể lấy được tên file
hoặc tên folder, khi đã có được tên rồi thì tiến hành in ra
màn hình.
Bảng 2.18: Mơ tả chức năng list file trong lập trình C

Chức năng

Create file

Mơ tả


Chức năng này sẽ tiến hành tạo ra file ở trong thư mục hiện
tại và sử dụng tên được truyền vào làm tên file.

Cách thực hiện

Thực hiện kiểm tra param xem đã truyền vào tên file chưa,
nếu chưa sẽ báo lỗi. Khi đã có tên file, sử dụng hàm open ở

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

trong thư viện <fcntl.h> với cờ là O_CREAT kèm theo
thuộc tính file là 0666.
Bảng 2.19: Mơ tả chức năng create file ở trong lập trình C

Chức năng

Remove file

Mơ tả

Chức năng này sẽ tiến hành xoá file ở trong thư mục hiện
tại, tên file xoá sẽ được truyền vào như là một arument.

Cách thực hiện

Sử dụng hàm unlink ở trong thư viện <unistd.h> để thực

hiện xố file.
Bảng 2.20: Mơ tả chức nưng remove file ở trong lập trình C

Chức năng

Show file

Mơ tả

Chức năng này sẽ tiến hành hiển thị nội dung của file lên
console.

Cách thực hiện

Thực hiện bằng cách mở file với cờ O_RDONLY và tiến
hành đọc file và hiển thị nội dung file trên console đến hết
file.
Bảng 2.21: Mô tả chức năng show file trong lập trình C

2.1.2. Thực thi
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
void check_param(int argc, char *argv[]) {
if (argc <= 1) {
printf("chua nhap tham so lenh\n");
exit(0);

}
if (strcmp(argv[1], "ls") == 0) {
}
if (strcmp(argv[1], "create") == 0 || strcmp(argv[1],
"remove") == 0 ||

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

strcmp(argv[1], "cat") == 0) {
if (argc < 3) {
printf("chua nhap ten file\n");
exit(0);
}
}
}
void list_file(int argc, char *argv[]) {
char dir_path[100];
strcpy(dir_path, ".");
DIR *d;
struct dirent *dir;
if (argc == 3) {
strcpy(dir_path, argv[2]);
}
d = opendir(dir_path);
if (d) {
while ( (dir = readdir(d)) != NULL) {
printf("%s\n", dir->d_name);

}
closedir(d);
} else {
printf("folder khong ton tai\n");
exit(0);
}
}
void create_file(int argc, char *argv[]) {
int fd;
fd = open(argv[2], O_CREAT, 0666);
if (fd == -1) {
printf("tao file that bai\n");

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

exit(0);
} else {
printf("tao file %s thanh cong\n", argv[2]);
exit(0);
}
}
void remove_file(int argc, char *argv[]) {
int status;
status = unlink(argv[2]);
if (status == -1) {
printf("error delete file ! file not found\n");
exit(0);

} else {
printf ("success delete file %s \n", argv[2]);
exit(0);
}
}
void cat_file(int argc, char *argv[]) {
int fd;
char buffer[1000];
fd = open(argv[2], O_RDONLY);
if (fd == -1) {
printf("error file not found\n");
exit(0);
}
while (read(fd, buffer, sizeof(buffer)) != 0) {
printf("%s", buffer);
}
printf("\n");
}
int main(int argc, char *argv[]) {

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99


37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.C.33.44.55.54.78.655.43.22.2.4.55.2237.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.66

check_param(argc, argv);
if (strcmp(argv[1], "ls") == 0) {
list_file(argc, argv);
}
if (strcmp(argv[1], "create") == 0) {

create_file(argc, argv);
}
if (strcmp(argv[1], "remove") == 0) {
remove_file(argc, argv);
}
if (strcmp(argv[1], "cat") == 0) {
cat_file(argc, argv);
}
return 0;
}
Code 2.5: Code thực thi file management trong C

2.2. Network management
2.2.1. Phân tích thiết kế
Chức năng network management bao gồm chức năng list ra các network deveice.

Hình 2.6: Usecase network management trong lập trình C

Chức năng

List deveice

Mô tả

Chức năng này sẽ tiến hành hiển thị tất cả các network
deveice trong máy.

37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.55.77.77.99.44.45.67.22.55.77.C.37.99.44.45.67.22.99



×