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

话不多说,直接贴代码

#include
#include

#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的必要性

你可能感兴趣的:(C语言功能杂记,linux,shell,c语言)