Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
console::CmdResult Class Reference

命令执行结果封装类。 More...

#include <syscmd.h>

Public Member Functions

bool ok () const
 检查命令是否成功执行。
bool error () const
 检查命令是否执行但返回错误码。
bool fail () const
 检查命令执行是否完全失败。
int status () const
 获取命令退出状态码。
const std::string & output () const
 获取命令的标准输出内容。

Private Member Functions

 CmdResult ()
 私有默认构造函数。

Private Attributes

int status_
 命令退出状态码(0 成功,-1 管道打开失败)
std::unique_ptr< std::string > ptr_
 命令输出内容(含 stderr)

Friends

CmdResult syscmd (const std::string &exe, const std::vector< std::string > &args={}, const std::map< std::string, std::string > &kwargs={})
 友元声明,仅允许 syscmd 创建实例。

Detailed Description

命令执行结果封装类。

存储命令执行状态码和标准输出内容,对象只能通过 syscmd 函数创建。

Constructor & Destructor Documentation

◆ CmdResult()

console::CmdResult::CmdResult ( )
inlineprivate

私有默认构造函数。

Member Function Documentation

◆ error()

bool console::CmdResult::error ( ) const
inline

检查命令是否执行但返回错误码。

Returns
true 管道打开成功但退出码非 0
false 管道打开失败或退出码为 0

◆ fail()

bool console::CmdResult::fail ( ) const
inline

检查命令执行是否完全失败。

Returns
true 管道打开失败
false 管道成功打开

◆ ok()

bool console::CmdResult::ok ( ) const
inline

检查命令是否成功执行。

Returns
true 执行成功(管道打开且退出码为 0)
false 执行失败

◆ output()

const std::string & console::CmdResult::output ( ) const
inline

获取命令的标准输出内容。

Returns
const std::string& 输出内容(含 stderr)
Warning
请先使用 ok() 或 fail() || error() 检查合法性,否则行为未定义

◆ status()

int console::CmdResult::status ( ) const
inline

获取命令退出状态码。

Returns
int 退出码(0 成功,非 0 错误,-1 管道打开失败)

◆ syscmd

CmdResult syscmd ( const std::string & exe,
const std::vector< std::string > & args = {},
const std::map< std::string, std::string > & kwargs = {} )
friend

友元声明,仅允许 syscmd 创建实例。

Parameters
exe可执行文件路径或命令名。
args命令行参数列表。
kwargs关键字参数字典(格式:key value)。
Returns
CmdResult 包含执行结果的对象。

自动合并 stderr 到 stdout,使用 256 字节缓冲区读取输出。

auto result = syscmd("ls", {"-la", "/tmp"}, {});
if (result.ok()) {
std::cout << result.output();
}
friend CmdResult syscmd(const std::string &, const std::vector< std::string > &, const std::map< std::string, std::string > &)
友元声明,仅允许 syscmd 创建实例。
Definition syscmd.h:123
Warning
函数阻塞直到命令执行完毕。

Member Data Documentation

◆ ptr_

std::unique_ptr<std::string> console::CmdResult::ptr_
private

命令输出内容(含 stderr)

◆ status_

int console::CmdResult::status_
private

命令退出状态码(0 成功,-1 管道打开失败)


The documentation for this class was generated from the following file: