Poco中提供了一个很简单的类Environment来实现这个功能。这个类的定义如下: 1. 获取系统第一块网卡的信息; 2. 获取、设置指定名称的环境变量值;3. 获取操作系统名称、版本、结构;4. 获取处理器数量。
例如:
class Foundation_API Environment /// This class provides access to environment variables /// and some general system information.
{
public:
typedef UInt8 NodeId[6]; /// Ethernet address.
static std::string get(const std::string& name); /// Returns the value of the environment variable /// with the given name. Throws a NotFoundException /// if the variable does not exist.
static std::string get(const std::string& name, const std::string& defaultValue);
/// Returns the value of the environment variable /// with the given name. If the environment variable /// is undefined, returns defaultValue instead.
static bool has(const std::string& name); /// Returns true iff an environment variable /// with the given name is defined.
static void set(const std::string& name, const std::string& value); /// Sets the environment variable with the given name /// to the given value.
static std::string osName(); /// Returns the operating system name. static std::string osVersion(); /// Returns the operating system version.
static std::string osArchitecture(); /// Returns the operating system architecture.
static std::string nodeName(); /// Returns the node (or host) name.
static void nodeId(NodeId& id); /// Returns the Ethernet address of the first Ethernet /// adapter found on the system. /// Throws a SystemException if no Ethernet adapter is available.
static std::string nodeId(); /// Returns the Ethernet address (format "xx:xx:xx:xx:xx:xx") /// of the first Ethernet adapter found on the system. /// Throws a SystemException if no Ethernet adapter is available.
static unsigned processorCount(); /// Returns the number of processors installed in the system. /// If the number of processors cannot be determined, returns 1.
static Poco::UInt32 libraryVersion(); /// Returns the POCO C++ Libraries version as a hexadecimal /// number in format 0xAABBCCDD, where /// - AA is the major version number, /// - BB is the minor version number, /// - CC is the revision number, and /// - DD is the patch level number. /// Some patch level ranges have special meanings: /// - Dx mark development releases, /// - Ax mark alpha releases, and
/// - Bx mark beta releases.
};