20
BÀI TẬP THỰC HÀNH MÔN KỸ THUẬT LẬP TRÌNH TRÊN UNIX Người biện soạn: GV Ngô Thị Vinh Bộ môn: THVT- Khoa CNTT&TT A. BÀI TẬP VỀ THỰC HIỆN LỆNH TRÊN SHELL Bài 1: Đăng nhập vào hệ thống và mở file /etc/passwd từ giao diện đồ họa để xem danh sách các người dùng trong hệ thống. a. Đọc các thông tin về mỗi người dùng trong hệ thống trên file /etc/passwd bao gồm: username:password:userId:groupId:comment:homedir:startup. Khởi động shell bash và thực hiện các công việc: a: Chuyển sang tài khoản root bằng lệnh: $ su root nhập mật khẩu cho tài khoản root (trên phòng máy mật khẩu root được thiết lập là 123456). Lúc này dấu nhắc shell chuyển thành #. b: Xem danh sách các nhóm trong hệ thống bằng lệnh cat: $ cat /etc/group - Quan sát thông tin của từng nhóm trên mỗi dòng gồm 4 trường. c: Thêm các nhóm người dùng có tên Nhom1 và Nhom2 vào hệ thống, trong đó Nhom1 thuộc nhóm người dùng hệ thống (có groupid < 499). 1

Dang baitapthuchanh monhdh_unix

  • Upload
    bao-boi

  • View
    1.522

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Dang baitapthuchanh monhdh_unix

BÀI TẬP THỰC HÀNH MÔN

KỸ THUẬT LẬP TRÌNH TRÊN UNIXNgười biện soạn: GV Ngô Thị Vinh

Bộ môn: THVT- Khoa CNTT&TT

A. BÀI TẬP VỀ THỰC HIỆN LỆNH TRÊN SHELLBài 1: Đăng nhập vào hệ thống và mở file /etc/passwd từ giao diện đồ họa để xem

danh sách các người dùng trong hệ thống.

a. Đọc các thông tin về mỗi người dùng trong hệ thống trên file /etc/passwd bao gồm:

username:password:userId:groupId:comment:homedir:startup.

Khởi động shell bash và thực hiện các công việc:

a: Chuyển sang tài khoản root bằng lệnh:

$ su root

nhập mật khẩu cho tài khoản root (trên phòng máy mật khẩu root được thiết lập là

123456). Lúc này dấu nhắc shell chuyển thành #.

b: Xem danh sách các nhóm trong hệ thống bằng lệnh cat:

$ cat /etc/group

- Quan sát thông tin của từng nhóm trên mỗi dòng gồm 4 trường.

c: Thêm các nhóm người dùng có tên Nhom1 và Nhom2 vào hệ thống, trong đó

Nhom1 thuộc nhóm người dùng hệ thống (có groupid < 499).

d: Thay đổi tên nhóm nhóm người dùng Nhom1 thành admin_group.

e. Thêm một người dùng Hung với các tùy chọn: chú thích (comment) “Nguyen Manh

Hung”, thư mục làm việc “/home/Hung”, ngày hết hiệu lực của tài khoản (ngày mà tài

khoản sẽ bị hủy bỏ) là 15/06/2010, ngày mật khẩu hết hiệu lực trước khi người dùng

bị hủy bỏ khỏi hệ thống: 20, nhóm khởi tạo của người dùng là admin_group.

f: Thêm người dùng Hung vừa tạo vào nhóm Nhom2.

g. Thiết lập mật khẩu cho tài khoản Hùng vừa tạo là hung123.

h. Logout khỏi hệ thống rồi đăng nhập và tài khoản Hung vừa tạo.

i. Chuyển sang tài khoản root bằng lệnh su root, rồi thay đổi tài khoản Hung thành

manhhung.

k. Xóa Nhom2 (chú ý đảm bảo không có user nào thuộc vào nhóm này).

1

Page 2: Dang baitapthuchanh monhdh_unix

l. Xóa tài khoản ManhHung khỏi hệ thống.

Bài 2: Khởi động máy đăng nhập vào hệ thống Linux, khởi động shell bash rồi

thực hiện các công việc sau:

a. Xem đường dẫn đến thư mục hiện hành dùng lệnh pwd

b. Dùng lệnh ls để xem danh sách các file trong thư mục hiện hành

- Lệnh ls không có tham số:

$ls

- Lệnh ls với tham số -l để quan sát thông tin chi tiết về từng file hoặc thư mục và cho

biết: kiểu file (là file thông thường hay file thư mục), các quyền truy cập của chủ sở

hữu, nhóm và người dùng khác đối với file, tên chủ sở hữu, tên nhóm sở hữu, số liên

kết đến file, kích thước, ngày,giờ tạo file

$ls –l

c. Thay đổi quyền truy cập của chủ sở hữu, nhóm và người dùng khác đối với một thư

mục/file bằng các lệnh chmod. Thí dụ đối với thư mục Music trong thư mục thư mục

hiện hành:

(chú ý sau mỗi lệnh dùng lệnh ls –l để quan sát sự thay đổi vừa thiết lập đối với thư

mục hoặc file vừa thao tác)

$ chmod u=rwx Music

$ chmod u-x,go=rx Music

$ chmod u=rw,g=r,o=rx Music

$ chmod u+x,g+x,r-x Music

$ chmod = Music (hủy tất cả các quyền)

hoặc sử dụng trong chế độ biểu tượng:

$ chmod 0664 Music

$ chmod 0777 Music

$ chmod 0000 Music

$ chmod 764 Music Download

d. Tạo ra một file vd1 trong thư mục Music

$ cat > vd1.txt

- Dùng lệnh chmod thiết lập quyền cho toàn bộ file và thư mục con của thư mục

Music:

2

Page 3: Dang baitapthuchanh monhdh_unix

$ chmod –R 640 Music

- Quan sát sự thay đổi trên file Music/vd1.txt

$ ls –l Music/vd1.txt

e. Làm tương tự đối với các file và thư mục khác.

Bài 3: Thay đổi chủ sở hữu đối với file/thư mục

a. Tạo một thư mục mới dir1 trong thư mục /home (dùng lệnh mkdir /home/dir1)

b. Dùng lệnh ls –l để xem chủ sở hữu và nhóm sở hữu của thư mục dir1 vừa tạo.

c. Chuyển sang tài khoản root sử dụng lệnh su.

d. Thiết lập chủ sở hữu của thư mục dir1 là root và nhóm sở hữu của dir1 là root.

e. Xem chủ sở hữu và nhóm sở hữu của dir1 bằng lệnh ls.

f. Tạo ra một nhóm người dùng hệ thống (có id <499) có tên group1.

g. Thiết lập nhóm chính sở hữu dir1 là group1 bằng lệnh chgrp.

Bài 4: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Xem thông tin về phiên bản của nhân hệ điều hành bằng lệnh uname với các tùy

chọn khác nhau như –a và -r.

b. Xem các runlevel của hệ thống được thiết lập sẵn trong file /etc/inittab bằng lệnh

cat /etc/inittab.

c. Khởi động lại hệ thống bằng lệnh init 6.

d. Xem dung lượng các ổ đĩa trong hệ thống bằng lệnh df.

e. Xem dung lượng đĩa được sử dụng cho từng file và thư mục trong thư mục hiện

hành với các tùy chọn khác nhau –h, -s hoặc kết hợp cả hai –hs.

f. Tắt hệ thống sau 10 phút và đưa ra lời cảnh báo “He thong chuan bi shutdown sau

10 phut”.

g. Nhấn Ctrl+C để hủy bỏ quá trình shutdown hệ thống.

h. Đưa ra lời cảnh báo tắt hệ thống sau 15 phút (nhưng không tắt thật sự).

i. Khởi động lại hệ thống ngay lập tức sử dụng lệnh shutdown với tùy chọn –r.

Bài 5: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Xem nội dung biến PS1 và PS2 lưu trữ các dấu nhắc hệ thống sử dụng lệnh echo

$PS1 và echo $PS2.

3

Page 4: Dang baitapthuchanh monhdh_unix

b. Thiết lập địa chỉ ip cho máy trên cổng Ethernet sử dụng lệnh:

ifconfig eth0 192.168.10.1 netmask 255.255.255.0 up

Bài 6: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Xem shell hệ hành của hệ thống (echo $SHELL).

b. Dùng lệnh echo để xem giá trị của các biến môi trường HOME, PATH, PWD,

USER.

c. Gán giá trị cho biến môi trường PS2 (lưu trữ dấu nhắc nhập liệu) là !, rồi dùng lệnh

echo để xem giá trị $PS2 vừa gán.

d. Xem thư mục hiện hành bằng lệnh pwd

e. Dùng lệnh ls với tùy chọn –a xem danh sách các file và thư mục trong thư mục hiện

hành bao gồm cả file ẩn.

f. Dùng lệnh ls với tùy chọn –l xem thông tin đầy đủ về danh sách các file và thư mục

trong thư mục hiện hành.

Bài 7: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Tạo thư mục MonToan trong thư mục hiện hành sử dụng lệnh mkdir

b. Tạo các thư mục bai1, bai2 trong thư mục MonToan.

c. Đổi tên thư mục bai2 trên thành thư mục bai21.

d. Xem nội dung của thư mục MonToan.

e. Xóa thư mục bai1, bai21 và thư mục MonToan vừa tạo trên.

Bài 8: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Tạo thư mục BaiTap trong thư mục hiện hành (/home/ubuntu).

b. Tạo file vd1.txt sử dụng lệnh touch trong thư mục BaiTap

c. Ghi kết quả đầu ra của lệnh ls đối với thư mục hiện hành và file vd1.txt.

d. Đổi tên file vd1.txt thành file vd2.txt.

e. Tạo ra file vd3.txt trong thư mục BaiTap bằng cách sử dụng lệnh cat > và nhập vào

nội dung sau:

This is my example

My name is Mr Minh

4

Page 5: Dang baitapthuchanh monhdh_unix

I’m a student.

nhấn ctrl+D để kết thúc việc nhập.

f. Tạo mới thư mục BT trong thư mục hiện hành.

g. Tạo một file file1.txt trong thư mục BaiTap.

h. Sao các file bắt đầu bằng vd trong thư mục BaiTap sang thư mục BT.

i. Xóa file vd2.txt trong thư mục BT.

k. Đếm số ký tự, số từ, số dòng trong file vd3.txt sử dụng lệnh wc

Bài 9: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành

b. Chuyển thư mục dir2 vào trong thư mục dir1 (sử dụng lệnh mv).

c. Tạo thư mục dir3 trong thư mục dir2

d. Thực hiện xóa cây thư mục dir1/dir2/dir3

Bài 10: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Tạo một file bai1.txt trong thư mục hiện hành (sử dụng lệnh cat) rồi nhập vào nội

dung:

De thuc hien sao chep noi dung cua 2 file trong Linux can su dung lenh cp voi

2 tham so la file nguon va file dich. Trong truong hop tham so thu nhat là file

nguon va tham so thu 2 la thu muc thi lenh cp se thuc hien sao chep file nguon

vao thu muc da chi dinh o tham so thu 2.

b. Tạo một file bai2.txt trong thư mục hiện hành.

c. Sao chép nội dung của file bai1.txt sang file bai2.txt

d. Tạo 2 thư mục dir1 và dir2 trong thư mục hiện hành

e. Sao chép 2 file bai1.txt và file bai2.txt vào thư mục dir1

f. Sao chép tất cả các file có đuôi .txt vào trong thư mục dir2

g. Xóa tất cả các file có đuôi .txt trong thư mục hiện hành.

h. Đếm số lượng file và thư mục trong thư mục hiện hành sử dụng lệnh ls kết hợp với

lệnh wc với tùy chọn –l.

Bài 11: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

5

Page 6: Dang baitapthuchanh monhdh_unix

a. Tạo một file bai11.txt trong thư mục hiện hành và nhập vào nội dung sau đây:

aa

aa

bb

bb

cc

b. Xem nội dung file bai11.txt bằng cách loại bỏ các dòng trùng lặp bằng lệnh uniq.

c. Ghi nội dung của file bai11.txt gồm các dòng không trùng lặp vào một file

bai111.txt

d. Tạo một file bai112.txt nhập vào nội dung sau:

cc

aa

dd

bb

e. Sắp xếp nội dung của file bai112.txt theo thứ tự abc mà không phân biệt chữ hoa

chữ thường.

f. Xem danh các file và thư mục trong thư mục hiện hành theo thứ tự bảng chữ cái

bằng cách sử dụng kết hợp lệnh ls với lệnh sort.

Bài 12: Đăng nhập vào hệ thống Linux, rồi khởi động shell bash thực hiện các

công việc sau:

a. Tạo một file vd1.txt và nhập vào nội dung tùy ý.

b. Xem kiểu nội dung của file vd1.txt

c. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file

được hiển thị ra (sử dụng lệnh cat -n).

d. Xem nội dung của file /etc/passwd theo từng trang màn hình bằng cách sử dụng

lệnh more.

e. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho tất cả các dòng của file

được hiển thị ra màn hình bằng cách sử dụng lệnh nl, sau đó ghi kết quả này vào một

file vd2.txt.

f. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng khác trống

của file được hiển thị ra màn hình bằng cách sử dụng lệnh nl.

6

Page 7: Dang baitapthuchanh monhdh_unix

g. Xem nội dung của file vd1.txt theo cách thêm số thứ tự cho các dòng trống của file

được hiển thị ra màn hình bằng cách sử dụng lệnh nl.

h. Xem 3 dòng đầu tiên của file vd1.txt (lệnh head).

i. Xem 3 dòng cuối cùng của file vd1.txt (lệnh tail).

j. Xem 3 dòng đầu tiên của 2 file vd1.txt và vd2.txt, 3 dòng thuộc file vd2.txt được

hiển thị tiếp theo sau 3 dòng của file vd1.txt.

k. Tìm sự khác nhau giữa 2 file vd1.txt và vd2.txt (lệnh diff).

l. Tìm kiếm các dòng có chứa xâu “aa” trong file vd1.txt.

m. Tìm kiếm các dòng trong file vd1.txt mà không bắt đầu bởi kí tự a hoặc b.

n. Tìm kiếm các dòng trong file vd1.txt mà bắt đầu bởi kí tự a hoặc b.

o. Tìm kiếm file có tên vd1.txt trong thư mục hiện hành.

B. BÀI TẬP VỀ SHELL SCRIPT

1. Cấu hình ssh trên linux để cho phép chia sẻ dữ liệu với windows qua giao thức FTP.

2. Viết kịch bản shell script cho phép tạo tài khoản người dùng mới có username là $1

và password được nhập vào từ bàn phím.

3. Viết kịch bản shell script cho phép in ra màn hình số lượng và tên của các user và

các group có trong hệ thống.

4. Viết kịch bản shell script cho biết một user được truyền vào là $1 thuộc những

nhóm nào trong hệ thống, in ra màn hình danh sách các nhóm.

5. Viết kịch bản shell script cho phép tìm kiếm một file có tên được truyền vào là $1

trong thư mục có tên được truyền vào là $2. In ra màn hình dòng thông báo có tìm

thấy hoặc không tìm thấy.

6. Viết kịch bản shell script cho phép ghép nội dung của file A với nội dung của file B

theo từng dòng tương ứng, tức dòng 1 ở file A ghép với dòng 1 ở file B và được cách

nhau một dấu cách.

7. Viết kịch bản shell script cho phép thay đổi quyền truy nhập của một file có tên

được truyền vào là $1 và quyền là $2. Chương trình thông báo lỗi nếu thay đổi không

thành công.

8. Viết kịch bản cho phép thay đổi chủ sở hữu của một file có tên được truyền vào là

$1 và chủ sở hữu mới là $2. Chương trình thông báo lỗi nếu thay đổi không thành

công.

7

Page 8: Dang baitapthuchanh monhdh_unix

9. Viết kịch bản cho phép thay đổi mật khẩu của một người dùng có tên được truyền

vào là $1 và mật khẩu được nhập vào từ bàn phím. Thông báo lỗi nếu thay đổi không

thành công.

10. Viết kịch bản shell script cho thép thay đổi nhóm sở hữu chính đối với một file có

tên được truyền vào là $1 và tên nhóm sở hữu mới là $2.

11. Viết kịch bản shell script cho phép đếm số lượng thư mục con và số lượng các file

trong thư mục hiện hành. In kết quả ra màn hình.

12. Viết kịch bản shell script cho phép xem thông tin về không gian bộ nhớ đã được

sử dụng trong bộ nhớ của hệ thống.

13. Viết kịch bản shell script cho phép xem dung lượng của một file được truyền vào

là $1.

14. Viết kịch bản shell script cho phép tìm kiếm các file .txt bắt đầu bằng ‘D’ hoặc ‘d’

và kết thúc bằng ‘c’ hoặc ‘C’ trong thư mục hiện hành và danh sách tìm được ra màn

hình.

15. Viết kịch bản shell script cho phép tìm kiếm các file .doc bắt đầu bằng ‘A’ hoặc

‘B’ hoặc ‘C’ và kết thúc bằng ‘1’ trong thư mục hiện hành, in danh sách các file ra

màn hình.

16. Viết kịch bản shell script cho phép đếm số lượng và in ra màn hình danh sách các

file ẩn trong thư mục hiện hành.

17. Viết kịch bản shell script cho xóa một người dùng khỏi hệ thống, đồng thời xóa bỏ

cả thư mục làm việc của người dùng đó với tên user được truyền vào là $1.

18. Viết kịch bản cho xóa một nhóm người dùng khỏi hệ thống có tên được truyền vào

$1, kiểm tra đảm bảo không có người dù ng nào trong hệ thống có nhóm sở hữu chính

là nhóm cần xóa; Ngược lại thông báo là “Đây là nhóm sở hữu chính của một hoặc

nhiều user khác” hoặc thông báo lỗi nếu nhóm này không tồn tại.

19. Viết kịch bản shell script cho biết kiểu một file có tên được truyền vào là $1 là

kiểu gì (pipe, file thông thường, file thư mục, …. )?

20. Viết kịch bản shell script cho phép đếm và in ra màn hình số lượng các user đang

đăng nhập vào hệ thống.

21. Viết kịch bản shell script cho phép đếm số lượng tiến trình trong hệ thống.

8

Page 9: Dang baitapthuchanh monhdh_unix

22. Viết kịch bản shell script cho phép xóa một thư mục không rỗng có tên được

truyền vào là $1, thông báo lỗi nếu thư mục không tồn tại.

23. Viết kịch bản shell script cho phép đổi tên một thư mục có tên được truyền là $1

và tên mới là $2, chương trình thông báo lỗi nếu tên mới là tên của một thư mục đã

tồn tại hoặc thư mục cần đổi tên không tồn tại.

24. Viết kịch bản shell script cho phép copy nội dung của một thư có tên được truyền

vào $1 sang thư mục mới có tên là $2.

25. Viết kịch bản shell script cho phép sao chép từ dòng thứ x được truyền là $3 đến

dòng thứ y được truyền là $4 từ một file có tên được truyền vào là $1 sang một file có

tên đươcn truyền vào là $2

26. Viết kịch bản shell script cho phép sao chép tất cả các file .txt bắt đầu bằng ‘f’

hoặc ‘F’ vào thư mục có tên MyFile trong thư mục hiện hành.

27. Viết kịch bản cho phép nhập vào một dãy các số nguyên cho đến khi người dùng

nhập vào ‘K’ khi có câu hỏi “Ban co nhap tiep (C/K)”. Lưu trữ dãy số này vào một

SoNguyen.txt mỗi số nguyên trên một dòng, tính tổng các số nguyên và ghi tổng này

vào dòng cuối cùng trong một file.

28. Viết kịch bản shell script cho phép thực hiện phép toán giữa hai toán hạng được

truyền vào là $1 và $2, với phép toán được truyền vào là $3.

29. Viết kịch bản shell script cho phép loại bỏ những dòng trùng lặp trong một file

được truyền vào $1và ghi kết quả sang một file khác được truyền vào là $2. Thống

báo lỗi nếu file trong $1 không tồn tại.

29. Viết kịch bản shell script cho phép sắp xếp nội dung của một file được truyền vào

$1 theo thứ tự vần ABC và ghi kết quả sang một file khác được truyền vào là $2.

Thống báo lỗi nếu file trong $1 không tồn tại.

30. Viết kịch bản shell script cho phép in ra màn hình nội dung của một file được

truyền vào $1 theo thứ tự từ dòng cuối cùng đến dòng đầu tiên. Chương trình thông

báo lỗi khi file được truyền vào không tồn tại.

31. Viết kịch bản shell script cho phép thiết lập thiết lập tiến trình tắt hệ thống sau 5

phút 30 giây chạy ở trạng thái background. Sau đó In ra màn hình danh sách các tiến

trình trong hệ thống, nhập vào id của tiến trình vừa tạo và dùng lệnh kill để hủy tiến

trình này.

9

Page 10: Dang baitapthuchanh monhdh_unix

32. Viết kịch bản shell script cho phép tính tích của các số được truyền vào từ kịch

bản. (thí dụ: gọi tên_kịch_bản 2 7 5 thì in ra kết quả là 70).

33. Viết kịch bản shell script cho phép tính giai thừa của một số nguyên được vào là

$1.

34. Viết chương trình C tạo ra 2 tiến trình. Tiến trình thứ nhất đọc từ file nhiều chuỗi

liên tiếp, mỗi chuỗi gồm các phép toán +, -, *, / và hai toán hạng.

Thí dụ trong file sẽ lưu các chuỗi dạng như sau :

2 + 3

1 - 2

4 * 6

15 / 3

Sau đó tiến trình thứ nhất truyền các chuỗi dữ liệu này cho tiến trình thứ hai. Tiến

trình thứ hai thực hiện tính toán và trả chuỗi kết quả về lại cho quá trình đầu tiên để

ghi lại vào file như sau:

2 + 3 = 5

1 - 2 = -1

4 * 6 = 24

15 / 3 =5

35. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều

dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó quá trình

này gởi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ

tự tăng dần, đồng thời tính tổng của dãy đó và gởi dãy kết quả cùng với tổng tính được

tương ứng cho mỗi dãy về lại tiến trình P0. Khi này, P0 thực hiện ghi các dãy kết quả

vào lại file.

36. Viết chương trình C tạo một tiến trình bơ vơ.

37. Viết chương trình C để tạo ra một tiến trình Zombie

38. Viết chương trình C đọc vào 2 ma trận A & B từ file, sau đó dùng nhiều thread để

thực hiện việc nhân 2 ma trận này. Ghi ma trận kết quả ra một file khác.

39. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó

dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử

10

Page 11: Dang baitapthuchanh monhdh_unix

giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là

0) lên 1.

40. Viết chương trình C đọc vào một dãy A từ file, dùng 1 thread khác để sắp xếp dãy

theo thứ tự tăng dần và ghi kết quả vào một file khác.

41. Viết chương trình C đọc vào một ma trận (kích thước N*N) từ file, sau đó dùng n

thread để tính tổng của từng hàng trên ma trận (1 thread nếu tính tổng một hàng xong

có thể tính tổng của một hàng khác). Dùng một thread để thu thập các kết quả của các

thread kia và ghi vào một file kết quả.

42. Viết chương trình C cho phép thay đổi độ ưu tiên của một tiến trình (cụ thể là tiến

trình ps) trong hệ thống.

43. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGALRM đến tiến trình

hiện hành sau 5 giây.

44. Viết chương trình C cho phép chỉ thị nhân gửi tín hiệu SIGSTOP đến tiến trình

hiện hành sau 5 giây

45. Viết chương trình C cài đặt một trình điều khiển tín hiệu alarmHandler() bằng

cách sử dụng tín hiệu signal, vòng lặp sẽ dừng lại cho đến khi nhận được một tín hiệu

SIGALRM.

46. Viết chương trình C cho phép được bảo vệ để chống lại tín hiệu SIGNINT.

47. Viết chương trình C cho phép thay đổi quyền sở hữu đối với một file được truyền

vào khi gọi thực thi.

48. Viết chương trình C cho phép thay đổi chủ sở hữu đối với một file được truyền

vào khi gọi thực thi.

49. Viết chương trình C cho phép thay đổi nhóm sở hữu đối với một file được truyền

vào khi gọi thực thi.

50. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy

số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến

trình thứ 2 thực hiện tính tổng của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình

1 thực hiện ghi kết quả này vào cuối file ban đầu.

51. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n

thread để tính tổng của từng cột trên ma trận. Dùng một thread để thu thập các kết quả

của các thread kia và ghi vào một file kết quả.

11

Page 12: Dang baitapthuchanh monhdh_unix

52. Viết chương trình C đọc vào một ma trận (kích thước n*n) từ file, sau đó dùng n

thread để tính tổng của từng hàng trên ma trận. Dùng một thread để thu thập các kết

quả của các thread kia và ghi vào một file kết quả

53. Viết chương trình C đọc vào một dãy số nguyên từ file, dùng 1 thread khác để sắp

xếp dãy theo thứ tự tăng dần và ghi kết quả vào một file khác.

54. Viết chương trình C đọc vào một ma trận A từ file và nhập vào một số k, sau đó

dùng n thread để thực hiện tìm kiếm trên các ma trận này xem có bao nhiêu phần tử

giống k. Mỗi lần tìm thấy phần tử giống k thì tăng biến chung number (khởi động là

0) lên 1.

55. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma

trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác

để thực hiện việc nhân 2 ma trận này và ghi ma trận kết quả ra một file khác.

56. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều

dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình

này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện tính tổng của dãy đó và

gửi dãy kết quả về lại tiến trình P0. P0 thực hiện ghi các dãy kết quả vào lại file ban

đầu.

57. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình

con nhập vào các thông điệp và gửi cho tiến trình cha, tiến trình cha nhận các thông

điệp và in ra màn hình.

58. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình

cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng

dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.

59. Viết chương trình C cho phép tạo ra hai tiến trình cha và con, trong đó tiến trình

cha nhập vào một dãy số và gửi dãy số này cho tiến trình con, tiến trình con tính tổng

dãy số rồi gửi lại cho tiến trình cha, tiến trình cha in kết quả ra màn hình.

60. Viết chương trình C tạo ra 2 tiến trình P0 và P1. Tiến trình P0 đọc từ file nhiều

dãy số nguyên liên tiếp (mỗi dãy có thể có số phần tử khác nhau). Sau đó tiến trình

này gửi lần lượt các dãy này cho tiến trình P1. P1 thực hiện sắp xếp mỗi dãy theo thứ

tự tăng dần và gửi dãy kết quả sắp xếp về cho tiến trình P0. Khi này, P0 thực hiện ghi

các dãy kết quả vào một file khác.

12

Page 13: Dang baitapthuchanh monhdh_unix

61. Viết chương trình C tạo ra 2 tiến trình riêng biệt. Tiến trình 1 đọc từ file một dãy

số nguyên liên tiếp. Sau đó tiến trình này gửi dãy số này cho tiến trình thứ 2. Tiến

trình thứ 2 thực hiện tính tích của dãy số và gửi kết quả lại cho tiến trình 1. Tiến trình

1 thực hiện ghi kết quả này vào cuối file ban đầu.

62. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma

trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác

để thực hiện tìm kiếm phần tử lớn nhất trên ma trận và ghi kết quả vào cuối file ban

đầu.

63. Viết chương trình C đọc vào 2 ma trận A và B từ một file (lưu các dòng của ma

trận A, một dòng trống, rồi đến các dòng của ma trận B), sau đó dùng một thread khác

để thực hiện việc trừ 2 ma trận này và ghi ma trận kết quả ra một file khác.

13