用exec函数族实现shell脚本

来源:互联网 发布:廖记棒棒鸡淘宝 编辑:程序博客网 时间:2024/06/06 18:13

简介: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;}