C语言里有个popen函数,用来捕获shell里命令的输出,这样C和shell也可以相互通信了。在网上看了个例子修改了一下,原文:http://blogold.chinaunix.net/u/16292/showart_393022.html
/*
作用:演示popen用法,将源程序输出到argv[1]命名的文件中
使用:argv[0] outputFile
*/
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define CMDLEN 1024
int main(int argc, char** argv)
{
do
{
if ( 2 != argc)
{
printf("Usage:%s outputFile!\n",argv[0]);
break;
}
FILE *stream;
FILE *wstream;
char buf[1024];
char myCmd[CMDLEN];
memset(myCmd,0,CMDLEN);
strcpy(myCmd,"cat ");
strcat(myCmd,argv[0]);
strcat(myCmd,".c");
memset( buf, '\0', sizeof(buf) );//初始化buf,以免后面写如乱码到文件中
stream = popen( myCmd, "r" ); //将myCmd命令的输出 通过管道读取(“r”参数)到FILE* stream
wstream = fopen( argv[1], "w+"); //新建一个可写的文件
fread( buf, sizeof(char), sizeof(buf), stream); //将刚刚FILE* stream的数据流读取到buf中
fwrite( buf, 1, sizeof(buf), wstream );//将buf中的数据写到FILE *wstream对应的流中,也是写到文件中
pclose( stream );
fclose( wstream );
}while(0);
return 0;
}
分享到:
相关推荐
"Linux系统中popen函数的缺陷与改造方案" Linux 操作系统中,popen 函数是一个常用的函数,用于执行 shell 命令并得到执行结果。然而,Linux 库提供的 popen 函数却有两个致命的缺陷。本文将分析这两个缺陷产生的...
Linux 下使用 popen() 执行 shell 命令 在 Linux 操作系统中,popen() 函数是一个强大的工具,允许开发者执行 shell 命令并获取其输出结果。popen() 函数通过创建一个管道,调用 fork() 产生一个子进程,执行一个 ...
在Linux系统中,`popen`函数是一个非常实用的C语言标准库函数,它允许程序以进程间通信(IPC,Inter-Process Communication)的方式与另一个命令或者程序进行交互。`popen`函数在`stdio.h`头文件中定义,它的主要...
在Linux系统中,`popen()`函数是一个非常实用的函数,它允许程序与其他程序进行交互,通常是执行系统命令并读写其输出。`popen()`是C标准库`stdio.h`的一部分,它通过创建管道(pipe)并在子进程中运行一个shell来...
最近在做web服务器端处理。刚好用到要在服务器端调用popen函数查询相关命令,并上传到前端。所以在服务器端做的查询ip,mask等的测试代码。在linux下编译运行即可得到需要的值。代码简单。
首先,我们需要了解在Windows和Unix-like系统(如Linux、macOS)中实现异步命令执行的不同方法。在Windows中,我们可以使用CreateProcess和CreatePipe函数来启动新的进程并与之通信。CreateProcess可以创建一个新的...
在这个场景中,我们看到的`tcps.zip_linux 远程控制_popen`主题是关于在Linux环境下,利用管道(pipe)和`popen`函数来实现远程控制功能。 首先,我们要理解`popen`函数的工作原理。`popen`函数创建一个新的进程,...
fgets 读取 popen 内容阻塞的问题是一个常见的 Linux 应用程序开发中遇到的问题。该问题的解决方案涉及到 Linux 操作系统中进程间通信、管道和文件指针的使用。 在 Linux 系统中,一个父进程可以通过 fork 和 exec ...
本文提出了一种面向函数的动态内存泄漏检测方法,该方法关注于在Linux环境下对内存泄漏进行更精确的追踪和分析。 内存泄漏通常发生在程序分配动态内存后,未能在不再需要时释放它。虽然小型程序可能不会立即受其...
在UNIX和Linux操作系统中,进程创建和控制是通过一系列系统调用来实现的,其中最常见的是`fork`、`exec`系列以及`system`和`popen`函数。这些调用各自有不同的特性和用途,理解它们的区别对于进行系统级编程至关重要...
本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况。 如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下: 复制代码 代码如下: top -bi > cpuHistory.log 或 复制代码 代码...
和之前C++执行Linux Bash命令的方法 一样,Python依然支持system调用和popen()函数来执行linux bash命令。 方法一:system调用 #仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 import os os....
`popen`函数在C语言中被广泛用于启动一个子进程,并与之进行I/O通信,但在这个特定的情况下,由于频繁使用`popen`可能导致某些异常,因此开发者选择了使用`fork`系统调用来创建子进程作为替代方案。 在Linux操作...
### Linux下检测网卡与网线连通状态 在Linux环境下,经常需要对网络设备的状态进行检查,确保网络连接正常工作。本文将详细介绍如何通过Linux命令行工具来检测网卡与网线的连通状态,并提供一个使用C语言实现该功能...
Linux系统。同一主机,ip为本地回环 “127.0.0.1” 需求概述 完成一个以socket套接字为基础的c/s服务器程序,该程序通过客户端与服务器端连接后,实现一个交互式SHELL的功能。 其中服务端用popen来创建子...
在`module_load.c`和`module_load.h`中,可能包含了一个示例,演示如何使用`popen`来加载Linux内核模块。通常,这会涉及到使用`insmod`, `rmmod`等命令,这些命令用于动态插入或移除内核模块。 4. **安全与注意...
通过以上介绍和示例代码分析,我们可以看到在Linux C程序中使用`popen()`函数来获取shell命令的输出是一种非常实用且高效的方法。它不仅可以简化代码逻辑,还能提高程序的可维护性和扩展性。对于那些需要频繁执行...
在Linux环境中,开发者可能还会用到一些特定的系统调用,如使用system()执行shell命令,或者通过popen()和pclose()进行进程通信。 至于MySQL的使用,初学者需要了解基本的SQL语法,如CREATE DATABASE、CREATE TABLE...
- 文件`1.cpp`:可能展示了如何使用`popen()`和`pclose()`来读取`/sys/class/net`目录下的`address`文件。 - 文件`2.cpp`:可能利用`fopen()`和`fgets()`直接读取`/sys/class/net`或`/proc/net/dev`。 - 文件`3.cpp`...