没有合适的资源?快使用搜索试试~ 我知道了~
下面的代码用于在c++函数里面调用shell,并且执行命令,取回命令执行结果。 #include #include #include #include int main() { const int SIZE = 64; const int MAX_RESPONSE_SIZE = 65535; char charBuff[SIZE]; int bytesRead = 0; int closeResult; std::string result_; std::string cmd_ = ls -al; // 要执行的命令 if
资源推荐
资源详情
资源评论
linux c++ 调用调用shell命令,保存执行结果命令,保存执行结果 示例示例
下面的代码用于在c++函数里面调用shell,并且执行命令,取回命令执行结果。
#include
#include
#include
#include
int main()
{
const int SIZE = 64;
const int MAX_RESPONSE_SIZE = 65535;
char charBuff[SIZE];
int bytesRead = 0;
int closeResult;
std::string result_;
std::string cmd_ = "ls -al"; // 要执行的命令
if (system(nullptr) == 0) // 查看shell是否可用
{
std::cout << "shell not available" << std::endl;
return 1;
}
auto cmdOut = popen(cmd_.c_str(), "r"); // 执行命令
if (cmdOut == nullptr)
{
std::cout << "popen error" <= MAX_RESPONSE_SIZE)
{
result_.append(charBuff, MAX_RESPONSE_SIZE - bytesRead);
break;
}
else
{
result_.append(charBuff);
}
bytesRead += strlen(charBuff);
}
closeResult = pclose(cmdOut); // 关闭
std::cout << "bytesRead=" << bytesRead << std::endl;
std::cout << "closeResult=" << closeResult << std::endl;
std::cout << "WEXITSTATUS(closeResult)=" << WEXITSTATUS(closeResult) << std::endl;
std::cout << "result=" << result_ << std::endl;
return 0;
}
结果如下
[root@test shell]# ./main
bytesRead=246
closeResult=0
WEXITSTATUS(closeResult)=0
result=total 20
drwxr-xr-x 3 root root 49 Dec 5 08:00 .
drwxr-xr-x 5 root root 92 Dec 5 07:40 ..
-rwxr-xr-x 1 root root 14416 Dec 5 08:00 main
-rw-r--r-- 1 root root 1205 Dec 5 08:00 main.cpp
作者:纠结的绳子
资源评论
weixin_38522029
- 粉丝: 4
- 资源: 880
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功