2012-01-20 32 views
5

Đó phải là một cái gì đó như thế:Platform (OS) phát hiện trong chương trình

(if (= system-type 'gnu/linux) 
    (system "make")) 

Thành thật mà nói tôi nghĩ rằng thực hiện Đề án của tôi thậm chí không thể làm điều đó trong anyways nhưng tôi miễn phí để thêm nhận thức cho nó . Cú pháp lược đồ thông thường để phát hiện nền tảng là gì?

cảm ơn bạn

+3

Tôi nghi ngờ không có cú pháp chuẩn cho việc này. Nhưng như với rất nhiều thứ Đề án, nó dễ dàng, đủ để thêm vào các biến thể khác nếu bạn thực hiện nó trong một trong số họ. Tôi đoán là, bạn nên viết một chức năng tìm kiếm sự tồn tại (và có thể nội dung) của các tập tin cụ thể mà sẽ chỉ ra hệ thống bạn đang chạy trên. Hãy tìm "/ bin/uname" để tìm các hệ thống giống như Linux, sau đó chạy nó để tìm hiểu chi tiết. – Janne

+1

Các câu hỏi như thế này là tốt nhất, và chỉ ra lý do tại sao nó chính xác hơn để gọi cho Scheme một họ ngôn ngữ chứ không phải là một ngôn ngữ; hầu hết thời gian, viết một chương trình đòi hỏi phải viết cho một người cụ thể, thay vì tất cả chúng. Câu trả lời của Ryan là câu trả lời đúng cho Racket, và tôi nghĩ rằng sự đáp ứng của cộng đồng Racket nói chung là một lý do chính đáng để làm cho nó trở thành sự lựa chọn của bạn. Xin lỗi vì sự ủng hộ thiên vị :). –

Trả lời

8

tôi không thể nói cho bất kỳ Schemes khác, nhưng vợt có một thủ tục gọi là system-type:

> (system-type) 
'unix 
> (system-type 'machine) 
"Linux ... x86_64 GNU/Linux" ;; ellipses mine, output is same as `uname -a` 
1

guile có chức năng uname, mà trả về một mô tả như một đối tượng vector lược đồ:

[email protected](guile-user)> (uname) 
$2 = #("Linux" "gblaptop" "2.6.39-gentoo-r3" "#4 SMP Fri Oct 21 08:12:17 PDT 2011" "i686") 
Các vấn đề liên quan