C++执行Linux Bash命令
来源:互联网 发布:合并pdf软件 编辑:程序博客网 时间:2024/06/05 16:26
方法一:fopen()函数
#include<cstdlib>#include<string>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 300;void Test(void){ char line[N]; FILE *fp; string cmd = "ps -ef| grep java | awk '{print $2}'"; ////引号内是你的linux指令 // 系统调用 const char *sysCommand = cmd.data(); if ((fp = popen(sysCommand, "r")) == NULL) { cout << "error" << endl; return; } while (fgets(line, sizeof(line)-1, fp) != NULL){ cout << line ; } pclose(fp);}int main(){ Test(); return 0;}
注意:
popen函数原型: FILE * popen( const char * command,const char * type);
popen()会调用fork()产生子进程,然后从子进程中调用ps -ef| grep java | awk ‘{print $2}’来执行参数command的指令。参数type可使用“r”代表读取,“w”代表写入。popen()会建立管道连到子进程的标准输
出设备或标准输入设备,然后返回一个文件指针。随后进程便可利
用此文件指针来读取子进程的输出设备或是写入到子进程的标准输
入设备中。此外,所有使用文件指针(FILE*)操作的函数也都可以使
用,除了fclose()以外。
在编写具SUID/SGID权限的程序时请尽量避免使用popen(),popen()会继承环境变量,通过环境变量可能会造成系统安全的问题。
或者,更简单的:
方法二:system()函数
#include <cstdlib> int main() { system("ps -ef| grep java"); //括号内是你的linux指令 return 0; }
注意:system()会调用fork()产生子进程,由子进程来调用”ps -ef| grep java ” 这个string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。所以相比于直接执行 ps -ef| grep java , 用这个system()调用会多一个进程id。
在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。
出处:
1.C++ 调用Linux系统命令:http://blog.csdn.net/chenguolinblog/article/details/39855559
2.linux 中c/c++实现终端命令行命令:http://www.cnblogs.com/bovenson/p/3886990.html
3.linux C中调用shell命令和运行shell脚本:http://blog.sina.com.cn/s/blog_8043547601013rxf.html
- java执行Linux bash命令
- C++执行Linux Bash命令
- Python3 执行Linux Bash命令
- bash命令执行
- bash 命令执行环境
- Linux useradd命令执行,出现 bash:useradd:command not found
- Linux bash 管道符及多命令执行
- Linux执行命令提示:bash:command not found
- bash执行多条命令
- Linux bash命令
- linux : bash命令
- linux bash 命令 笔记
- Linux bash 命令
- linux c语言实现 执行shell命令
- linux bash command bash脚本命令
- Linux下用bash命令执行名称中带有“(”符号的目录注意事项
- 在linux中执行wget命令提示 -bash: wget: command not found 解决方法
- 【BASH】检测命令执行的结果
- Java8改进的HashMap和Hashtable实现类
- Java LinkedList
- BackTrack5 学习笔记7 基于Kioptrix虚拟机的攻击实验1
- Java Web开发——Servlet监听器
- Android控件CircleLayout
- C++执行Linux Bash命令
- Java websocket + redis 实现多人单聊天室,多人多聊天室, 一对一聊天
- dp day2-背包
- Python 文件操作
- WebService的工作原理及实例
- Caffe 在 win10 环境下配置
- poj 2492
- python爬取数据
- u-boot回顾(二)