ubuntu 14.04.2
自己编写一个简单的shell
(简单爆了,因为这是我自己写的)
(虽然简单,但是最基本的功能还是能够实现的)
(头一回按照自己的思路独立写几行代码,感觉不错哦)
函数execvp(progname,arglist)的功能
- 将指定的程序复制到调用它的进程
- 将指定的字符串数组作为argv[]传给这个程序
- 运行这个程序
头文件:#include<unistdh>
函数原型:result = execvp(const char* file, const char* argv[])
返回值:如果出错,返回-1
几点注意事项:
- execvp 载入由 file 指定的程序到当前进程,然后试图运行它。
- execvp 在环境变量 PATH 所指定的路径中查找 file 文件。
- 字符串数组argv必须以NULL结尾
代码实现
#include <unistd.h>
int main(int ac,char* argv[])
{
char** arglist=(char**)calloc(ac,sizeof(char*));
int i;
/*argv[0]是myshell,不用写到arglist里,其他的按序写进arglist*/
for(i=0; i<ac-1; i++)
{
arglist[i]=argv[i+1];
}
arglist[ac-1]=0; //arglist以NULL结尾
execvp(argv[1],arglist);
return 0;
}
截图
在写这段代码的时候偶然发现,只include<stdio.h>
,execvp函数仍可以正常使用。
遗留问题:那个“总用量 100”是什么鬼?
参考文献《Unix/Linux编程实践教程》