C/C++程序中执行shell命令的2种方法
来源:互联网 发布:windows系统平板电脑 编辑:程序博客网 时间:2024/06/06 01:54
一、用system(const char * cmd)函数,必须包含头文件:#include <stdlib.h>
system函数会调用fork()产生子进程,由子进程来调用/bin/sh -c来执行参数cmd的指令
调用/bin/sh时失败则返回-127,其他失败原因返回-1,如果cmd指针为NULL,则返回非零值
调用成功则返回shell命令后的返回值。
例子:
二、popen/pclose,头文件:#include <stdio.h>
函数原型:FILE *popen(const char * cmd, const char * type);
popen函数会调用fork()产生子进程,由子进程来调用/bin/sh -c来执行参数cmd的指令
type的值为:"r" 代表读取,"w"代表写入
按照type的值,popen会建立管道连到子进程的标准输出或标准输入设备,然后返回一个文件指针。然后进程便可利用此文件 指针来读取子进程的输出设备或是写入到子进程的标 准输入设备中。
如果操作成功则返回文件指针,如果失败则返回NULL,错误原因再errno中
例子:
system函数会调用fork()产生子进程,由子进程来调用/bin/sh -c来执行参数cmd的指令
调用/bin/sh时失败则返回-127,其他失败原因返回-1,如果cmd指针为NULL,则返回非零值
调用成功则返回shell命令后的返回值。
例子:
char cmd[256]; sprintf(cmd, "mv %s %s.OK", file.c_str(), file.c_str()); system(cmd);
二、popen/pclose,头文件:#include <stdio.h>
函数原型:FILE *popen(const char * cmd, const char * type);
popen函数会调用fork()产生子进程,由子进程来调用/bin/sh -c来执行参数cmd的指令
type的值为:"r" 代表读取,"w"代表写入
按照type的值,popen会建立管道连到子进程的标准输出或标准输入设备,然后返回一个文件指针。然后进程便可利用此文件 指针来读取子进程的输出设备或是写入到子进程的标 准输入设备中。
如果操作成功则返回文件指针,如果失败则返回NULL,错误原因再errno中
例子:
char cmd[256]; FILE* fp; sprintf(cmd, "rm %s/tmp~*", sLocalPath.c_str()); fp=popen(cmd, "r"); if(fp == NULL) { PrintLog(1, "执行命令[%s]失败", cmd); return false; } pclose(fp);
- C/C++程序中执行shell命令的2种方法
- Linux C 程序执行 shell 命令并获取返回结果的方法
- c函数中执行shell 命令
- 在c语言中执行shell命令
- C语言中执行shell命令
- c程序调用shell命令方法
- 用c写cgi程序,不能在cgi程序中执行shell命令
- linux C程序中调用shell终端的命令
- linux C程序中调用shell终端的命令
- linux C程序中调用shell终端的命令
- 转载:C程序中如何获取命令执行的结果
- C程序中如何获取shell命令执行结果和返回值
- C语言中调用shell命令的方法
- 在C语言中调用shell命令的实现方法
- c语言执行shell命令
- c语言执行shell命令
- C语言执行shell命令
- 程序中执行shell命令
- Tomcat集群
- linux或unix上db2用户和组的作用
- uva 331 - Mapping the Swaps
- 使用javascript用一种非主流的方式提交POST表单
- android控制view的大小和位置(二)
- C/C++程序中执行shell命令的2种方法
- 轻松掌握AJAX(Jquery)异步通信
- poj 1692 求数字匹配对数
- uva 167 - The Sultan's Successors
- 界面测试用例的设计方法
- csdn题目(含解答)
- vim下区块的复制与黏贴
- java读写xml文件的方法
- 个人认为最佳模板制作方案