java execlp_Linux下的C程序,使用函数execlp运行Shell命令
通过C程序运行Shell命令,使用execlp函数
execlp的几个参数分别为:文件名,各个参数,(char*)0
其中“各个参数”部分中的第一个参数就是文件名(相当于文件名要输入两遍)
最后一个参数写(char*)0就可以了
文件b.cpp代码:
循环地输入命令→执行命令,直到按下Ctrl+C结束
#include
#include
#include
#include
using namespace std;
#define MAX_PARA_NUMS 10
#define MAX_CHAR_EACH_PARA 1000
int split(char* input, char output[MAX_PARA_NUMS][MAX_CHAR_EACH_PARA])
{
int counter = 0;
int len = strlen(input);
bool bTemp = false;
int i, j = 0;
for(i = 0; i < len; i++)
{
if(input[i] == ' ')
{
if(j != 0 && counter > 0)
{
output[counter - 1][j] = '\0';
}
bTemp = false;
}
else
{
if(bTemp == false)
{
j = 0;
counter++;
bTemp = true;
}
output[counter - 1][j] = input[i];
j++;
}
}
return counter;
}
int main()
{
int counter = 0;
char params[MAX_PARA_NUMS][MAX_CHAR_EACH_PARA];
//使用g++编译文件
//execlp("g++", "g++", "a.cpp", "-o", "a", (char*)0);
char buf[4096];
pid_t pid;
int status;
//输入PROMPT字符串
printf("CONSOLE-X\n");
printf("=========\n");
while (fgets(buf, 4096, stdin) != NULL)
{
if (buf[strlen(buf) - 1] == '\n')
{
buf[strlen(buf) - 1] = '\0';
}
pid = fork();
if (pid < 0)
{
printf("fork error");
}
else if (pid == 0)
{
counter = split(buf, params);
if(counter != 0)
{
printf("---------\n");
}
switch(counter)
{
case 0: break;
case 1:
{
execlp(params[0], params[0], (char*)0);
}
break;
case 2:
{
execlp(params[0], params[0], params[1], (char*)0);
}
break;
case 3:
{
execlp(params[0], params[0], params[1], params[2],
(char*)0);
}
break;
case 4:
{
execlp(params[0], params[0], params[1], params[2],
params[3], (char*)0);
}
break;
case 5:
{
execlp(params[0], params[0], params[1], params[2],
params[3], params[4], (char*)0);
}
break;
case 6:
{
execlp(params[0], params[0], params[1], params[2],
params[3], params[4], params[5], (char*)0);
}
break;
case 7:
{
execlp(params[0], params[0], params[1], params[2],
params[3], params[4], params[5], params[6], (char*)0);
}
break;
case 8:
{
execlp(params[0], params[0], params[1], params[2],
params[3], params[4], params[5], params[6],
params[7], (char*)0);
}
break;
case 9:
{
execlp(params[0], params[0], params[1], params[2],
params[3], params[4], params[5], params[6],
params[7], params[8], (char*)0);
}
break;
case 10:
{
execlp(params[0], params[0], params[1], params[2],
params[3], params[4], params[5], params[6],
params[7], params[8], params[9], (char*)0);
}
break;
default:
{
printf("Illegal Input!\n");
}
break;
}
}
else
{
//输入PROMPT字符串
//printf("CONSOLE-X> ");
}
}
return 0;
}
将b.cpp编译成可执行的文件b(输入命令:g++ b.cpp -o b)
然后打开文件b,依次输入命令
ls -ls
cat a.cpp
g++ a.cpp -o a
./a
文件a.cpp代码:
#include
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
运行结果示例:
END
java execlp_Linux下的C程序,使用函数execlp运行Shell命令相关推荐
- 【Groovy】Groovy 代码创建 ( 使用 Java 语法实现 Groovy 类和主函数并运行 | 按照 Groovy 语法改造上述 Java 语法规则代码 )
文章目录 一.创建 Groovy 代码文件 二.使用 Java 语法实现 Groovy 类和主函数并运行 三.按照 Groovy 语法改造上述 Java 语法规则代码 一.创建 Groovy 代码文件 ...
- python程序捕获subprocess.Popen运行cmd命令的实时输出
Python学习记录,如果帮到你,评论里鼓励一下(手动滑稽),谢谢. python程序捕获subprocess.Popen运行cmd命令的实时输出 概述 疑问 展望 概述 我使用python调用pyq ...
- gl linux qt 库_Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)
最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...
- php实现linux命令,PHP在Linux下运行Shell命令
原本在本机开发PHP的时候,Shell调用一切正常.上线的时候才反应到线上的服务器对权限做了严格的控制,一顿折腾之后梳理出在严格权限控制的Linux上如何通过Nginx/Apache 以Web的方式调 ...
- 在vc6控制台程序中如何调用运行ImageMagick命令行工具
在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...
- Java 从虚拟机层面看程序代码是怎么运行起来的
专栏原创出处:github-源笔记文件 ,github-源码 ,欢迎 Star,转载请附上原文出处链接和本声明. Java JVM-虚拟机专栏系列笔记,系统性学习可访问个人复盘笔记-技术博客 Java ...
- MAC下如何打开程序和调出终端运行窗口
Mac 程序打开方式 下方菜单栏点击这个图标 就进入程序列表了 当然并不是所有程序都能在列表中找到,这个时候需要搜索! 拿终端为例,搜索框中输入terminal 点击右侧的这个"终端&quo ...
- 点餐系统后台服务器部署,Java后台——点餐小程序在服务器上运行点餐系统供别人访问...
![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzN ...
- Linux下如何让程序以管理员权限运行
以QQ为例(QQ路径:/usr/local/qq): 1.进入root: :~$ sudo su 2.run qq ...
- python是在linux系统下运行的吗_Linux系统下python代码运行shell命令的方法
方法一:os.popen #!/usr/bin/python#-*- coding: UTF-8 -*- importos, sys#使用 mkdir 命令 a = 'ls'b= os.popen(a ...
最新文章
- Cell:人体细菌到究竟有多少,再作报告必引此文
- Anton and Fairy Tale CodeForces - 785C(二分+思维)
- Underscore.js常用方法介绍
- 谷歌母公司将分拆出新量子公司,名为“沙箱”
- Mysql主备延迟的来源
- leetCode----day01---- 从排序数组中删除重复项
- php升序排列,php 基础问题表单里面怎么升序和降序?
- 图形化编程 html,c++图形界面编程
- 微信公众号开发(一)--开发模式与编辑模式
- Asp.net Core使用Microsoft.Office.Interop.Word转换文档
- android访问win10共享文件夹,手机怎么用ES浏览器访问Win10共享文件教程
- vue 项目中实现pdf预览 pdf打印 pdf下载
- python读取文件r_python读入文件时加r的作用?
- Linux 安装AndroidSdk 并使用zipalign对齐工具完成apk的签名
- 按钮点击事件(java)
- Genesis 社区答疑—第一期
- html认识时间游戏,认识时间教学设计
- 【机器学习sklearn】决策树(Decision Tree)算法
- 2018秋c语言程序设计考试答案,2018秋C语言程序设计上(赵三元)-中国大学mooc-题库零氪...
- 虚拟期货开户(期货虚拟盘是什么什么意思)