2011-11-12 16 views
7

Tôi thực sự mới với Lazarus/FreePascal và tôi không có kinh nghiệm Delphi trước. Tôi muốn có thể nhận được thông tin phiên bản hệ điều hành và loại tài khoản người dùng trên cả Windows và Linux. Tôi thấy rằng có một API hệ thống Windows, nhưng không thể tìm thấy bất cứ điều gì tương tự cho Linux.Nhận thông tin hệ thống Linux với Lazarus và FreePascal

Có API hệ thống Linux cho Lazarus/FreePascal và nếu có, làm cách nào tôi có thể sử dụng nó?

+0

Trên Linux, bạn sẽ cần phải gọi vào 'libc'. Tôi không có bất kỳ ý tưởng hay không các thư viện FPC quấn lên cho bạn. Tôi hy vọng và hy vọng rằng họ sẽ làm. –

+0

Tuy nhiên, bạn không muốn sử dụng đơn vị "libc" trong tệp freepascal, vì nó bị khấu hao. – Noah

Trả lời

4

Không có điểm thống nhất như vậy trên Linux, mà bạn có thể viết một tiêu đề và sau đó tiếp tục sử dụng nó. Hơn nữa, kể từ khi nhiều phần của Linux được phiên bản độc lập, không có những điều như một phiên bản duy nhất.

Điều đó đang được nói, phiên bản hạt nhân có thể được nhận thông qua baseunix.fpuname(). Phiên bản phân phối là khó, vì mỗi phân phối lưu trữ thông tin phiên bản của mình theo một cách khác.

Bước đầu tiên là xác định thông tin bạn cần và ý tưởng sơ bộ về địa điểm (ví dụ: thư viện hệ thống như libc, thông tin bổ sung như sysctl và/proc và nếu hệ thống cấp cao hơn trên hệ thống máy tính để bàn cho phép truy vấn thông tin, ví dụ: thông qua DBUS). Những tham chiếu đó sẽ không có trong Pascal luôn. Sau đó, đặt câu hỏi cụ thể tại đây, hoặc trên diễn đàn/maillists Lazarus.

Nhưng không có chức năng như WMI luôn hoạt động và khá bất biến. Linux là và vẫn là một hacker và hệ điều hành tweaker phân mảnh thành các bản phân phối riêng biệt với vài chứng khoán cứng. DBUS và HAL đang đi theo hướng đó, nhưng viêm phiên bản và sự chuyển đổi sang một thư viện mới khiến tuyến đường này ít phổ biến hơn.

+0

Có LSB tuy nhiên, các công cụ như "lsb_release" tồn tại trên ít nhất một số bản phân phối. –

+0

Chắc chắn có nhiều cách, nhưng tất cả đều là công việc khó khăn. Điểm của thông điệp là nó sẽ khó hơn Windows, và sẽ không phải là một nỗ lực một lần. Đối với mỗi thuộc tính bổ sung có thể có liên quan đến công việc. Đầu tiên suy nghĩ lâu dài và khó khăn về yêu cầu của bạn. –

+0

Cảm ơn thông tin. – Shade

1
  1. Có đơn vị "Unix", bạn có thể kiểm tra xem bạn có muốn gì không.

Tôi muốn có thể để có được thông tin phiên bản hệ điều hành

này có ý nghĩa gì chính xác? Bạn có thể sử dụng đầu ra của "uname -a" (Được gọi từ TProcess), tùy theo nhu cầu của bạn. Ngoài ra còn có các tệp như/etc/redhat-release, v.v., nhưng chúng có thể thay đổi theo phân phối.

và loại tài khoản người dùng trên cả Windows và Linux.

Có lẽ những gì bạn muốn trong Unix là xem người dùng đang ở trong nhóm nào. (Có nhiều cách để thực hiện việc này).

Tôi thấy rằng có một API hệ thống Windows, nhưng không thể tìm thấy bất kỳ điều gì tương tự cho Linux.

Linux có xu hướng thực hiện theo phương pháp "Mọi thứ là tệp", vì vậy một nơi nào đó thường có tệp (hoặc tệp giả) bạn có thể đọc với thông tin mình muốn. Nói chung, Unix linh hoạt hơn Windows. Ví dụ, trong Windows có thể là một cuộc gọi API để có được số lượng bộ vi xử lý hoặc tốc độ trong Mhz. Trong Linux, bạn có thể xem/dev/cpuinfo và phân tích thông tin đó dưới dạng tệp văn bản.

Có nhiều hương vị khác nhau của Unix và ngay cả trong Linux, các bản phân phối khác nhau. Tất nhiên bạn có thể thu hẹp phạm vi của những gì bạn muốn làm bằng cách chỉ hỗ trợ một số bản phân phối nhất định trong thời gian này.

Các vấn đề liên quan