Come posso determinare il sistema operativo del sistema da uno script Lua?


Answers

Puoi provare package.config:sub(1,1) . Restituisce il separatore del percorso, che è '\\' su Windows e '/' su Unixes ...

Question

Ok ho bisogno di determinare il sistema operativo da uno script Lua, ma Lua in quanto tale non ha API per questo, quindi uso os.getenv () e interrogare le variabili ambientali. Su Windows controllando la variabile ambientale "OS" mi dà il nome del sistema operativo del sistema operativo, ma ci sono delle variabili che esistono sia su Windows che sulla maggior parte delle versioni di Unix che possono essere controllate?




Quando lua è compilato, è configurato in modo leggermente diverso a seconda del sistema operativo per cui è stato compilato.

Molte delle stringhe impostate nel modulo 'pacchetto' possono quindi essere utilizzate per distinguere il sistema per cui è stato compilato.

Ad esempio, quando lua carica i moduli basati su C che sono distribuiti come librerie dinamiche, deve conoscere l'estensione usata per quelle librerie, che è diversa su ciascun sistema operativo.

Pertanto, per determinare il sistema operativo è possibile utilizzare una funzione simile alla seguente.

local BinaryFormat = package.cpath:match("%p[\\|/]?%p(%a+)")
if BinaryFormat == "dll" then
    function os.name()
        return "Windows"
    end
elseif BinaryFormat == "so" then
    function os.name()
        return "Linux"
    end
elseif BinaryFormat == "dylib" then
    function os.name()
        return "MacOS"
    end
end
BinaryFormat = nil





Links