编写一个简易shell命令行
用fork()创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。
创新互联建站是专业的泗水网站建设公司,泗水接单;提供网站建设、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行泗水网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
进程程序替换:替换数据和代码,执行不同逻辑,一旦替换之后,父,子进程代码,数据独立。
主要是创建进程,让子进程去执行命令。
主要有6个调度函数,函数名中p表示传文件名(靠环境变量来看是否存在PATH),没p的需把文件路径传过来,要执行一个程序必须先找到它.
带e表示用自定义环境变量,不带e表示从父进程继承而来的环境变量。
#include#include #include #include #include int main(int argc,char* argv[]) { pid_t id; while(1) { printf("[lxj/home]$"); fflush(stdout); char cmd_str[1024]={0}; ssize_t size=read(0,cmd_str,sizeof(cmd_str)-1); char cmd[32]={0}; char* my_argv[32]; memset(my_argv,0,sizeof(char*)*32); int length=strlen(cmd_str)-2; // printf("%s",cmd_str); if(size!=-1) { int index=0; while (length >= 0) { while (length >= 0&&cmd_str[length]==' ') { cmd_str[length--] = 0; } while (length >= 0 && cmd_str[length] != ' ') length--; my_argv[index++]=cmd_str+length+1; } my_argv[index]=NULL; int i=0; index--; for(;i 0){ pid_t waitPid=waitpid(id,NULL,0); } } return 0; }
本文标题:编写一个简易shell命令行
本文URL:http://scyanting.com/article/ipdjhg.html