用execvp()执行shell命令【JAVA教程】

!
也想出现在这里? 联系我们
信息

用execvp()执行shell命令,第1张

概述用execvp()执行shell命令

我想编写一个像linux shell一样的程序。 我开始写一个小程序来执行“ls”命令。 我无法弄清楚的是,为了让我的程序能够响应像shell这样的命令,我应该如何进行。 (如猫,光盘,目录)。

#include <iostream> #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #define MAX 32 using namespace std; int main() { pID_t c; char s[MAX]; int fd[2]; int n; pipe(fd); c = fork(); if(c == 0) { close(fd[0]); dup2(fd[1],1); execlp(\”ls\”,\”ls\”,\”-l\”,NulL); return 0; } else { close(fd[1]); while( (n = read(fd[0],s,MAX-1)) > 0 ) { s[n] = \’\’; cout<<s; } close(fd[0]); return 0; } return 0; }

我怎样才能让我的程序读取用户input的内容,并将其传递给execlp (或类似的事情)?

是否有可能在前台运行两个linux命令并合并它们的标准输出

如何将linux命令的结果复制到使用c代码的string中?

将输出redirect到windows中另一个命令的命令行参数

如何启动Cyber​​ghost并select国家/地区IP地址,并通过windows命令行在一段时间后自动更改IP地址?

为什么du和Perl的文件大小不一样?

一个shell基本上做到以下几点:

从stdin读取一行

解析该行以制作单词列表

叉子

那么shell(父进程)一直等到子进程结束,而子进程执行由从输入行提取的字列表所表示的命令的代码。

该shell然后在步骤1重新启动。

首先构建一个非常简单的外壳。

如果我正确地理解了一个问题,您可以:

用scanf()读取字符串数组

使用execvp()作为命令运行它(它和execlp() ,但是可以将所有参数作为数组传递)。

就像是:

char args[100][50]; int nargs = 0; while( scanf( \” %s \”,args[nargs] ) ) nargs++; args[nargs] = NulL; /* fork here * … /* child process */ execvp( args[0],args );

总结

以上是内存溢出为你收集整理的用execvp()执行shell命令全部内容,希望文章能够帮你解决用execvp()执行shell命令所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞164 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容