2014-11-06 121 views
1

我想實現一個跨平臺的功能來關閉計算機,而不使用任何系統特定的API,但「stdlib.h」std :: system函數。我幾乎沒有在網絡上找到任何有關它的可靠資源。跨平臺的方式來關閉計算機

在Windows系統下做這項工作:

#if defined(_WIN32) || defined(__WIN32) || defined(__WIN32__) 
std::system("shutdown -s -t 0"); 
#endif 

應該是什麼在其他操作系統上的命令(如在Linux,Mac OSX,等..)?

+5

沒有平臺獨立的方式,如何關閉系統本身依賴於系統。 – 2014-11-06 13:54:12

+1

'shutdown -P now' – Brandon 2014-11-06 13:54:31

+3

這是一個管理員而不是編程問題。你問的問題是「我需要用來關閉Linux/MacOSX/...盒的命令行是什麼?」與編程的唯一關係是,不是在終端中輸入這些內容,而是編寫了一個程序,該程序將調用帶有參數 – 2014-11-06 13:54:32

回答

2

在您的* nix系統上,以下內容應該可以工作。

#include <cstdlib> 

int main() 
{ 
    system("shutdown -P now"); 
    return 0; 
} 

然而,上面的代碼假定您登錄爲根,如果你不是,而沒有以root身份登錄,你會得到一個錯誤。

除了使用switch語句或if-else語句系列來指定操作系統的正確語法之外,沒有「跨平臺」的方法。

+0

這也適用於OSX? – plasmacel 2014-11-06 14:09:13

+1

是的,它應該在OSX上工作我在豹上測試過它。在它的核心OSX只是達爾文,但他們不喜歡承認這一點。 https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/KernelProgramming.pdf會給你進一步的文檔。簡而言之,它應該適用於更新的實現,即Mavericks,Yosemite等。另外,你應該知道很多人正在使用蘋果腳本來執行此操作。但最直接的方法是C++,用一個條件塊來評估OS的類型。 – williamscodes 2014-11-06 14:16:48

2

沒有跨平臺關機命令。

您需要查看您希望擁有它的操作系統中的shutdown命令,然後檢查客戶端正在運行的操作系統,並根據該命令或代碼選擇正確的命令或代碼來關閉特定系統。