本文主要是介绍实现自主myshell,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简单实现自己的myshell
用到以下三个函数:
fork:pid_t fork(void); //创建子进程
int execvp(const char *file,char * const argv[]);//替换子进程
pid wait(int *status);进程等待
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/wait.h>char *argv[8];
int argc = 0;void do_shell()
{int statu;pid_t pid = fork();if(pid == -1){perror("fork error\n");exit(EXIT_FAILURE);}if(pid == 0){execvp(argv[0],argv);perror("execvp error\n");}else{pid_t ret = wait(&statu);if(ret == -1){perror("wait error");exit(-1);}}
}
void do_parse(char *buf)
{int i = 0 ;int status = 0;while(buf[i]){if((!isspace(buf[i]))&&(status ==0) ){argv[argc++] = &buf[i];status = 1;}else if(isspace(buf[i])&&(status == 1)){status = 0;buf[i] = '\0';}i++;}argv[argc++] = NULL;
}int main()
{char buf[1024] = {};while(1){printf("myshell>:");scanf("%[^\n]%*c",buf);do_parse(buf);do_shell();}}
这篇关于实现自主myshell的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!