Linux:实现保存命令行输出到文件

话不多说,直接贴代码

#include<stdio.h>
#include<stdlib.h>

#define MAX_LEN 1024

int main()
{
	char command[MAX_LEN],content[MAX_LEN];
	FILE *fp;
	
	//将指令写入command
	sprintf( command, "cat /proc/meminfo" );
	fp = popen( command, "r" );
	if(fp == NULL)
		return -1;
	
	//读取指令返回的内容并关闭指针
	fread( content, sizeof(char), sizeof(content)-1, fp );
	content[sizeof(content)-1] = '\0';
	pclose(fp);
	
	//将结果输出到当前目录下Mem文件
	fp = fopen( "./Mem", "wt");
	fwrite( content, sizeof(char), strlen(content)+1, fp);
	pclose(fp);

}



接下来的内容适合希望对使用函数有更深了解的同学

1、 FILE* popen( const char* command, const char* type);

函数会调用 fork(); 生成子进程。然后通过子进程去调用 /bin/sh -c “command” 执行指令。
/bin/sh -c 作用是将一整个字符串当做一个完整的指令去执行。当一个command中含有两条指令的时候 :
sudo echo “example” >> example.txt
如上包含了 echo 和 >> 两条指令,而当用户没有这个文件的权限的时候,sudo只能给 echo 开启root权限,但是 >> 没有root权限,则会导致指令执行失败。而加上 /bin/sh -c 则可以解决这个问题。

type:“r”、“w”
分别表示读和写,使用"r",则可以通过fread();函数读出相关内容

参考博客:
popen的用法简单说明
/bin/sh -c的必要性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值