Lập trình hệ thống: Làm thế nào để thu thập thông tin?


7

Theo câu hỏi này , một cách tốt để học lập trình hệ thống sẽ là triển khai các công cụ hiện có. Tôi quyết định thử viết lại lsps.

Câu hỏi của tôi là làm thế nào một người sẽ tiến hành để có được tài liệu cho như vậy?

  • Tôi có thể tìm API của các cuộc gọi hệ thống ở đâu để truy vấn kernel, hệ thống tệp, v.v ...

  • Tôi nghĩ rằng có lẽ tôi có thể xem mã nguồn của các công cụ GNU. Tôi có thể tìm thấy nó ở đâu?

  • Có tài liệu tốt nào (hy vọng có sẵn miễn phí trực tuyến) mà các bạn muốn giới thiệu về nơi bắt đầu không?

Câu trả lời:


9

Bạn có thể sử dụng hướng dẫn Glibc làm tài liệu tham khảo. Nó không dành cho người mới bắt đầu tuyệt đối, nhưng nếu bạn thành thạo C một cách hợp lý, bạn sẽ có thể đọc một phần và viết một chương trình làm việc.

Bạn có thể tìm thấy nguồn của các công cụ GNU trên trang web GNU ; cách dễ nhất để có được nó là lấy các gói nguồn trên bản phân phối Linux của bạn (ví dụ: apt-get source coreutilsnếu bản phân phối của bạn sử dụng các tiện ích đóng gói Debian). Tôi khuyên bạn nên bắt đầu với BusyBox hơn là các công cụ GNU. BusyBox là một bộ tiện ích cho các hệ thống nhúng Linux; nó nhỏ hơn và đơn giản hơn các tiện ích GNU.

Bạn có thể chạy strace lsđể xem những gì hệ thống lsđang thực hiện. Lưu ý rằng khi bạn viết chương trình, bạn không gọi các cuộc gọi hệ thống trực tiếp, bạn gọi các chức năng trong thư viện C để thực hiện các cuộc gọi hệ thống. Đối với những thứ như thao tác tệp, thư viện C có chức năng như openreadkhá gần với các cuộc gọi hệ thống.

Đối với việc học, một cuốn sách (trên giấy) thường hữu ích. Lập trình nâng cao trong môi trường UNIX® ( APUE ) là một cổ điển. Nếu bạn nhận được nó, hãy chắc chắn để có được phiên bản thứ hai, vì phiên bản đầu tiên khá cũ. Cuốn sách này là tài liệu tham khảo, nhưng những cuốn sách khác có thể phù hợp hơn cho người mới bắt đầu; cửa hàng xung quanh.


1

Trên Linux , các lệnh như ps, freetopđược thực hiện đọc thông tin từ proc file hệ thống.

   The proc file system is a pseudo-file system which is used as an inter-
   face to kernel data structures.  It is commonly mounted at /proc.  Most
   of  it  is  read-only,  but  some  files  allow  kernel variables to be
   changed.

Bắt đầu tại man 5 procvà đừng quên rằng tất cả các tiện ích này là nguồn mở, vì vậy bạn cũng có thể xem chúng .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.