C语言实现一个Linux环境下的shell

一.实现一个shell的流程

1.捕捉键盘输入

将输入的命令和参数存储到一个数组中

2.解析命令

将输入的命令和参数分解成一个个独立的部分

3.创建子进程

因为shell是一个可以一直运行的程序,所以不能运行之后就退出,如果创建一个子进程,在子进程执行操作,子进程执行完毕后退出也不会对父进程造成影响,所以程序可以一直运行

4.在子进程中进行进程替换

将要完成的任务交给子进程

5.父进程等待子进程退出

防止产生僵尸进程

二.源码

#include <stdio.h>
#include <string.h>
#include <unistd.h>	//fork
#include <sys/types.h>
#include <sys/stat.h>	//umask
#include <sys/wait.h>	//wait
#include <fcntl.h>


#define MAX_ARGU_SZ 1024	//最大参数大小

char arguments[MAX_ARGU_SZ];	//参数数组

int main(int argc, char* argv[])
{
   
	while(1)
	{
   
		//将参数数组全部清空
		memset(arguments, 0, MAX_ARGU_SZ);

		//1.获取键盘输入
		printf("[user:host /]:$ ");
		//手动刷新文件缓冲区
		fflush(stdout);
		//获取一行输入
		fgets(arguments, MAX_ARGU_SZ - 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值