Bài giảng Tổng quan về Linux - Chương 12: Linux Programing
Số trang: 33
Loại file: pdf
Dung lượng: 5.51 MB
Lượt xem: 14
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Tổng quan về Linux - Chương 12: Linux Programing, trình bày các kiến thức về system calls, system call parameters, system calls không có trong Linux,... Đây là tài liệu học tập và giảng dạy dành cho sinh viên và giảng viên ngành CNTT.
Nội dung trích xuất từ tài liệu:
Bài giảng Tổng quan về Linux - Chương 12: Linux ProgramingLinux Programing System calls System call thường là một yêu cầu đến hệ điều hành để làm một tác vụ phần cứng/chuyên biệt hệ thống hay tác vụ đặc quyền hệ thống . Trong Linux-1.2 có 140 system calls được định Linux- nghĩa. System calls như close() được hiện thực trong Linux libc. Việc hiện thực này xoay quanh việc gọi một là syscall(). Các tham số truyền vào syscall() là số hiệu system call và được theo sau bởi các tham số cần thiết System calls Số hiệu của system call có tìm thể thấy ở < linux/unistd.h > Trong đó < sys/syscall.h > được cập nhật với libc mới. Nếu có các calls xuất hiện mà chúng chưa có trong libc, ta có thể gọi syscall(). System calls Ví dụ, ta có thể đóng file dùng syscall() như sau (không khuyến khích): #include extern int syscall(int, ...); int my_close(int filedescriptor) { return syscall(SYS_close, filedescriptor); } System call Parameters Trên kiến trúc i386 , system calls bị giới hạn đến 5 tham số không kể đến số hiệu system call bởi vì việc hạn chế số lượng thanh ghi Nếu bạn dùng Linux trên một kiến trúc khác, ta có thể check kiểm tra để tìm các syscall macros để xem phần cứng của bạn có thể hỗ trợ đến bao nhiêu tham số Các syscall macro này có thể được dùng thay thế cho syscall(), nhưng nó không được khuyến khích khi đã có những macro được phát triển thành các hàm đầy đủ tồn tại trong thư viện lập trình System call Parameters (tt) Do đó chỉ có những tay chuyên nghiệp mới nên chơi với các syscall macros. Ví dụ đây là một hàm close() có dùng syscall macro. #include _syscall1(int, close, int, filedescriptor); syscall1 macro mở rộng hàm close(). Do đó ta có close() xuất hiện 2 lần: một trong libc và một trong chương trình của ta. Giá trị trả về của syscall() hay syscall macro là -1 nếu system call thất bại và 0 hoặc lớn hơn nếu thành công.System Call không có trong Linux Các system call sau là tồn tại trên BSD và SYS V nhưng không tồn tại trên Linux: audit(), auditon(), auditsvc(), fchroot(), getauid(), getdents(), getmsg(), mincore(), poll(),putmsg(), setaudit(), setauid(). The “swiss army knife” ioctl phillips screwdriver, screwdriver, screwdriver, screwdriver, corkscrew, scissors, metal saw, wood saw, can opener, mini screwdriver, nailfile, metal file, wire bender, large blade, small blade, cap lifter, wire stripper, reamer, punch, key ring, tweezers,multi-purpose hook, chisel, wire cutters, pin, nail cleaner,multipurpose pliers, clef 6 pans 5mm pour connecteurs D-SUB,embout Pozidrive 0, embout Pozidrive 1, embouttournevis, embout Phillips 2, embout Hex (inbus), emboutTorx 8, embout Torx 10, embout Torx 15, long ballpointpen, toothpick http://www.swiss-knife.com/asp/detail.asp?lan=EN&code=1.7775.T&shop=SKThe “swiss army knife” ioctl ioctl viết tắt cho input/output control và nó được dùng để thao tác đến các character device thông qua filedescriptor. Format của ioctl là ioctl(unsigned int fd, unsigned int request, unsigned long argument). Giá trị trả về là -1 nếu có lỗi và =0 nếu request thành công (tương tự như các system call khác). ioctl (tt) Kernel phân biệt các file đặc biệt và file thông thường . File đặc biệt là những file nằm trong /dev và /proc. Chúng khác với các file thông thường là chúng dấu các giao diện với driver và không phải là một file thật sự chứa dữ liệu text hay binary. Đây là triết lý của UNIX và cho phép dùng các thao tác read/write thông thường trên tất cả các file. Bạn sẽ cần dùng ioctl nhiều khi thao tác với các file đặc biệt hơn là với các file thường. Nhưng bạn cũng có thể dùng ioctl trên các file thường !InterProcess Communications-IPC nterP ommunications- Cơ chế IPC trong Linux cung cấp một phương pháp cho nhiều tiến trình giao tiếp với nhau. Có nhiều phương pháp IPC cho Linux C programmers áp dụng: Half-duplex UNIX pipes FIFOs (named pipes) SYSV style message queues SYSV style semaphore sets SYSV style shared memory segments Networking sockets (Berkeley style, không đề cập ) Full-duplex pipes (STREAMS pipes,, không đề cập ) Các phương pháp này, khi được dùng một cách hiệu quả, sẽ mang lại một framework vững chắc cho client/server development trên bất kỳ một hệ UNIX nào (bao gồm cả Linux ...
Nội dung trích xuất từ tài liệu:
Bài giảng Tổng quan về Linux - Chương 12: Linux ProgramingLinux Programing System calls System call thường là một yêu cầu đến hệ điều hành để làm một tác vụ phần cứng/chuyên biệt hệ thống hay tác vụ đặc quyền hệ thống . Trong Linux-1.2 có 140 system calls được định Linux- nghĩa. System calls như close() được hiện thực trong Linux libc. Việc hiện thực này xoay quanh việc gọi một là syscall(). Các tham số truyền vào syscall() là số hiệu system call và được theo sau bởi các tham số cần thiết System calls Số hiệu của system call có tìm thể thấy ở < linux/unistd.h > Trong đó < sys/syscall.h > được cập nhật với libc mới. Nếu có các calls xuất hiện mà chúng chưa có trong libc, ta có thể gọi syscall(). System calls Ví dụ, ta có thể đóng file dùng syscall() như sau (không khuyến khích): #include extern int syscall(int, ...); int my_close(int filedescriptor) { return syscall(SYS_close, filedescriptor); } System call Parameters Trên kiến trúc i386 , system calls bị giới hạn đến 5 tham số không kể đến số hiệu system call bởi vì việc hạn chế số lượng thanh ghi Nếu bạn dùng Linux trên một kiến trúc khác, ta có thể check kiểm tra để tìm các syscall macros để xem phần cứng của bạn có thể hỗ trợ đến bao nhiêu tham số Các syscall macro này có thể được dùng thay thế cho syscall(), nhưng nó không được khuyến khích khi đã có những macro được phát triển thành các hàm đầy đủ tồn tại trong thư viện lập trình System call Parameters (tt) Do đó chỉ có những tay chuyên nghiệp mới nên chơi với các syscall macros. Ví dụ đây là một hàm close() có dùng syscall macro. #include _syscall1(int, close, int, filedescriptor); syscall1 macro mở rộng hàm close(). Do đó ta có close() xuất hiện 2 lần: một trong libc và một trong chương trình của ta. Giá trị trả về của syscall() hay syscall macro là -1 nếu system call thất bại và 0 hoặc lớn hơn nếu thành công.System Call không có trong Linux Các system call sau là tồn tại trên BSD và SYS V nhưng không tồn tại trên Linux: audit(), auditon(), auditsvc(), fchroot(), getauid(), getdents(), getmsg(), mincore(), poll(),putmsg(), setaudit(), setauid(). The “swiss army knife” ioctl phillips screwdriver, screwdriver, screwdriver, screwdriver, corkscrew, scissors, metal saw, wood saw, can opener, mini screwdriver, nailfile, metal file, wire bender, large blade, small blade, cap lifter, wire stripper, reamer, punch, key ring, tweezers,multi-purpose hook, chisel, wire cutters, pin, nail cleaner,multipurpose pliers, clef 6 pans 5mm pour connecteurs D-SUB,embout Pozidrive 0, embout Pozidrive 1, embouttournevis, embout Phillips 2, embout Hex (inbus), emboutTorx 8, embout Torx 10, embout Torx 15, long ballpointpen, toothpick http://www.swiss-knife.com/asp/detail.asp?lan=EN&code=1.7775.T&shop=SKThe “swiss army knife” ioctl ioctl viết tắt cho input/output control và nó được dùng để thao tác đến các character device thông qua filedescriptor. Format của ioctl là ioctl(unsigned int fd, unsigned int request, unsigned long argument). Giá trị trả về là -1 nếu có lỗi và =0 nếu request thành công (tương tự như các system call khác). ioctl (tt) Kernel phân biệt các file đặc biệt và file thông thường . File đặc biệt là những file nằm trong /dev và /proc. Chúng khác với các file thông thường là chúng dấu các giao diện với driver và không phải là một file thật sự chứa dữ liệu text hay binary. Đây là triết lý của UNIX và cho phép dùng các thao tác read/write thông thường trên tất cả các file. Bạn sẽ cần dùng ioctl nhiều khi thao tác với các file đặc biệt hơn là với các file thường. Nhưng bạn cũng có thể dùng ioctl trên các file thường !InterProcess Communications-IPC nterP ommunications- Cơ chế IPC trong Linux cung cấp một phương pháp cho nhiều tiến trình giao tiếp với nhau. Có nhiều phương pháp IPC cho Linux C programmers áp dụng: Half-duplex UNIX pipes FIFOs (named pipes) SYSV style message queues SYSV style semaphore sets SYSV style shared memory segments Networking sockets (Berkeley style, không đề cập ) Full-duplex pipes (STREAMS pipes,, không đề cập ) Các phương pháp này, khi được dùng một cách hiệu quả, sẽ mang lại một framework vững chắc cho client/server development trên bất kỳ một hệ UNIX nào (bao gồm cả Linux ...
Tìm kiếm theo từ khóa liên quan:
Hệ điều hành Linux Quản trị Linux Tìm hiểu về Linux Giới thiệu về Linux Bài giảng về Linux Các chương trình trong LinuxGợi ý tài liệu liên quan:
-
183 trang 314 0 0
-
80 trang 259 0 0
-
117 trang 226 1 0
-
Giáo trình Hệ điều hành: Phần 2
53 trang 201 0 0 -
Giáo trình Hệ điều hành Linux (Ngành: Công nghệ thông tin) - CĐ Công nghiệp Hải Phòng
103 trang 189 0 0 -
271 trang 163 0 0
-
Hướng dẫn sử dụng Windows 7 với Boot Camp
8 trang 140 0 0 -
Nghiên cứu xây dựng bộ sinh số ngẫu nhiên tích hợp với nhiều hệ điều hành
5 trang 129 0 0 -
Giáo trình Hệ điều hành Linux và Unix
214 trang 123 0 0 -
212 trang 104 0 0