C/C++实现读取当前文件夹下的文件-popen

常使用该方法获取bash命令的的输出,并将输出的文本用于分析,便于执行下面的操作,如本例子就是利用popen实现读取ls -l命令的输出

源码

#include <iostream>
#include <string>


using namespace std;
int main(int argc, char const *argv[])
{
    
    //-rwxrwxrwx 1 root group 64463 Mar 14 09:53 101.jpg\r\n
	string data = "";


	string cmd = "ls -l ";
	cout << "popen:" << cmd << endl;
	FILE *f = popen(cmd.c_str(), "r");
	if (!f)
		return -1;
	char buffer[1024] = { 0 };
	for (;;)
	{
		int len = fread(buffer, 1, sizeof(buffer) - 1, f);
		if (len <= 0)break;
		buffer[len] = '\0';
		data += buffer;
	}
	pclose(f);




	cout << data << endl;


    return 0;
}

输出结果

andrew@andrew-G3-3590:/work/01_C++基础/01_C++基础/c++基础day03/源码$ ./a.out 
popen:ls -l 
总用量 92
-rwxrwxr-x 1 andrew andrew 18408 9月   3 00:10 a.out
-rwxrw-r-- 1 andrew andrew   741 7月  22 23:15 dm01_类的构造和析构基础.cpp
-rwxrw-r-- 1 andrew andrew  1209 7月  22 23:15 dm02_构造函数的分类.cpp
-rwxrw-r-- 1 andrew andrew   840 7月  22 23:15 dm03_显示初始化方案.cpp
-rwxrw-r-- 1 andrew andrew  1131 9月   2 23:45 dm04_copy构造函数的调用12.cpp
-rwxrw-r-- 1 andrew andrew   800 7月  22 23:15 dm05_copy构造函数的调用场景3.cpp
-rwxrw-r-- 1 andrew andrew  1459 7月  22 23:15 dm06_copy构造函数的第4种应用场景.cpp
-rwxrw-r-- 1 andrew andrew  1472 7月  22 23:15 dm07_回顾复习.cpp
-rwxrw-r-- 1 andrew andrew   680 7月  22 23:15 dm08_构造函数调用规则研究.cpp
-rwxrw-r-- 1 andrew andrew   893 7月  22 23:15 dm09_深拷贝和浅拷贝.cpp
-rwxrw-r-- 1 andrew andrew  1221 7月  22 23:15 dm10_构造函数初始化列表.cpp
-rwxrw-r-- 1 andrew andrew  1436 7月  22 23:15 dm11_构造和析构综合练习.cpp
-rwxrw-r-- 1 andrew andrew   607 7月  22 23:15 dm12_构造中调用构造.cpp
-rwxrw-r-- 1 andrew andrew  1328 7月  22 23:15 dm13_new和delete.cpp
-rwxrw-r-- 1 andrew andrew  1484 7月  22 23:15 dm14_new和delete深入分析.cpp
-rwxrw-r-- 1 andrew andrew   738 7月  22 23:15 dm15_static关键字.cpp
-rwxrw-r-- 1 andrew andrew   650 7月  22 23:15 dm16_面向对象模型初探.cpp
-rwxrw-r-- 1 andrew andrew   429 7月  22 23:15 dm17_面向对象模型this指针练习.cpp
-rw-rw-r-- 1 andrew andrew   522 9月   3 00:10 test.cpp


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Achilles.Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值