简介:exec 函数族,非常强大可以执行我们在linux下操作的shell脚本命令
思路:考虑到exec函数每执行一次即开辟一个进程,故我们要考虑到回收子进程的操作
运行结果:
具体源码为myshell.c
注意我使用是execvp,大家可以使用execv,execl,execp等
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, const char *argv[])
{
pid_t pid;
int i=0;
char *argv_p[20];
char buff[1024];
while(1)
{
fgets(buff,sizeof(buff),stdin);
buff[strlen(buff) - 1] = '\0';
i = 0;
argv_p[i] = strtok(buff," ");
if(strncmp(buff,"quit",4) == 0)
break;
while((argv_p[++i] = strtok(NULL ," ")) != NULL)
;
argv_p[i] = NULL;
if((pid = fork()) < -1)
{
perror("fork");
exit(EXIT_FAILURE);
}
if(pid > 0)
{
wait(NULL);
}
if(pid == 0)
{
if(execvp(argv_p[0],argv_p) < 0)
{
perror("fail to execvp:");
exit(EXIT_FAILURE);
}
printf("hello world\n");
}
}
return 0;
}