首页 > 编程语言 >C++与Linux命令行交互方法

C++与Linux命令行交互方法

来源:互联网 2026-07-31 19:43:13

C++与Linux命令行交互有system()和popen()两种方式。system()直接执行命令但阻塞程序;popen()创建管道实现双向通信,能灵活接收输出或发送输入,适用于复杂交互场景。

C++程序与Linux命令行交互时,主要有两种方式:使用系统调用或利用管道机制。

C++与Linux命令行交互方法

长期稳定更新的攒劲资源: >>>点此立即查看<<<

1. 使用系统调用(system()函数)

最直接的方式是调用system()函数。该函数接受一个字符串参数,用于指定要执行的Linux命令。例如以下示例:

#include int main() {system("ls -l");return 0;}

程序运行后,会执行ls -l命令,并在屏幕上显示目录列表。需要注意的是,system()是阻塞调用——只有在命令执行完毕后,程序才会继续执行后续代码。

2. 使用管道(popen()函数)

如果system()不够灵活,popen()提供了更高级的交互方式。它允许在C++程序中创建管道,与外部进程进行双向通信:既能接收命令的输出,也能向命令发送输入。以下是一个封装示例:

#include #include #include #include std::string exec(const char* cmd) {std::array buffer;std::string result;std::shared_ptr pipe(popen(cmd, "r"), pclose);if (!pipe) throw std::runtime_error("popen() failed!");while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {result += buffer.data();}return result;}int main() {std::string output = exec("ls -l");std::cout << output;return 0;}

该示例通过popen()执行ls -l,逐行读取输出并存储到字符串中,最后打印到控制台。相比system(),管道方式更加灵活:可以处理标准输出和错误流,甚至主动向命令发送数据。

总结:system()简单直接,适合“只管执行、不关心结果”的场景;而popen()更像一个可控的交互通道,在实际开发中更推荐优先考虑。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。