Linux 调用系统命令并截获标准输出(stdout)和错误输出(stderr)

char ret[1024];
char *DoSysCmd(char * cmdline){
    FILE *fp;
    char line[32];
    char cmdtmp[256];
    memset(cmdtmp,0x00,256);
    sprintf(cmdtmp,"%s  2>&1",cmdline);//stderr是2,把2转向1
    memset(ret,0x00,sizeof(ret));
    fp = popen(cmdtmp, "r");
    while ( fgets( line, sizeof(line), fp))
    {
        sprintf(ret ,"%s%s",ret,line);
    }
    pclose(fp);
    return ret;
}
 
 
使用例子 

show_Info("检查是否存在可移动存储设备......");

result=DoSysCmd("cat /proc/scsi/scsi");

if (0==strcmp(result,"Attached devices: none/n"))

{

    show_Info("对不起,没有发现任何设备!");

    return;

}

时间: 2024-11-10 08:35:08

Linux 调用系统命令并截获标准输出(stdout)和错误输出(stderr)的相关文章

Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例_node.js

每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见http://nodejs.org/api/child_process.html,NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入.标准输出及标准错误输出的接口.   NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:   标准输入.标准输出及标准错误输出的接口 child.stdin 获取标准输入 ch

利用NodeJS的子进程(child_process)调用系统命令的方法分享_json

NodeJS子进程简介 NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入.标准输出及标准错误输出的接口. NodeJS子进程简介 NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有: 标准输入.标准输出及标准错误输出的接口 child.stdin 获取标准输入 child.stdout 获取标准输出 child.stderr 获取标准错误输出 获取子进程的PID:child.pid 提供生成子进程的重要方法:child_process.spawn(cmd,

Java exec详解 - 调用系统命令以及进程

调用系统命令 执行系统命令相对来说比较容易,可以通过使用 Runtime 和 Process 两个类来执行.我们可以通过Process的getInputStream和getErrorStream两个方法获取到结果和错误信息的输入流,下面就是实例代码,改代码通过执行 ps -ef 命令来获取结果(执行在mac或者linux上) 1234567891011121314151617181920212223242526272829303132333435 package map; import java

node js-node.js调用系统命令,输出结果中文会乱码

问题描述 node.js调用系统命令,输出结果中文会乱码 node.js的超级菜鸟一只-- 想在windows用child__process.exec()函数来执行一个系统命令,然后把结果在后台输出,但是中文会乱码-- 源代码: app.post('/', function (req, res, next){ child_process.exec('dir ' + req.params.name, function (err, data) { console.log(data); res.end

Node.js中安全调用系统命令的方法(避免注入安全漏洞)_node.js

在这篇文章中,我们将学习正确使用Node.js调用系统命令的方法,以避免常见的命令行注入漏洞. 我们经常使用的调用命令的方法是最简单的child_process.exec.它有很一个简单的使用模式;通过传入一段字符串命令,并把一个错误或命令处理结果回传至回调函数中. 这里是你通过child_process.exec调用系统命令一个非常典型的例子. 复制代码 代码如下: child_process.exec('ls', function (err, data) {     console.log(

Linux下C编程-----文件操作(1) 通过系统调用简单操作标准输入、标准输出、标准错误

Linux的 C系统调用操作  ,下面我们就来练习下 简单的系统调用操作 read系统调用测试 /************************************************************************* > File Name: read.c > Author: > Mail: > Created Time: Tue 10 Feb 2015 01:23:58 AM PST **********************************

ntpdate watchdog-应用程序调用系统命令ntpdate,导致看门狗重启

问题描述 应用程序调用系统命令ntpdate,导致看门狗重启 命令如下: ntpdate -p 1 ntp.sjtu.edu.cn 看门狗超时时间是1.5s,每次调用NTP同步,就会触发看门狗重启.求助!!

linux调用swt网页截屏

问题描述 linux调用swt网页截屏 在linux weblogic 服务器调用swt进行网页截屏时报错,困扰了大半个月了,还请各位朋友帮帮~~, 使用的是 DJNativeSwing-SWT.jar DJNativeSwing.jar swt.jar jna-4.0.0.jar NativeSwing[1]: Exception in thread "main" java.lang.reflect.InvocationTargetException NativeSwing[1]:

命令行-求大神帮忙实现windows C/C++调用系统命令,实在是无法实现啊

问题描述 求大神帮忙实现windows C/C++调用系统命令,实在是无法实现啊 两个系统命令如下: 如果在cmd下: netsh trace start capture=yes tracefile=C:Temp.etl 就开始执行,收集数据,停止收集数据时,使用 netsh trace stop 则等待他将数据成功写入指定文件即可 解决方案 system("pause")类似这中吧,你那个字符串放进了就行 或者打开cmd,完后输入流重定向进去啊 解决方案二: 很简单,可以使用匿名管道