当前位置:网站首页>进程(番外):自定义shell命令行解释器
进程(番外):自定义shell命令行解释器
2022-08-02 03:32:00 【RNGWGzZs】

---------------------加油!
本篇的理论较少,当然代码量也很少就仅仅是上传的代码而已。
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<string.h>
#define MAX_ORDER 1024
#define MAX_LINE 32
int main()
{
//命令 输入
char cmd[MAX_ORDER];
char* line[MAX_LINE]; //指令参数 拆开
//shell 脚本是一直运行的状态
while(1)
{
printf("\n[[email protected] my_shell]# ");
fgets(cmd,MAX_ORDER,stdin); //读取
cmd[strlen(cmd)-1]='\0'; //解决\n
//printf("%s\n",cmd);
line[0]=strtok(cmd," ");
int i=1;
while(line[i]=strtok(NULL," ")){
i++;
}
//创建子进程 进行调用
pid_t id=fork();
if( id == 0 )
{
//child 进行执行
execvp(line[0],line);
// 执行谁 怎样执行
}
int status=0;
pid_t ret=waitpid(id,&status,0); //此时父进程只需要等就行了
if(ret >0)
{
printf("exit code:%d\n",WEXITSTATUS(status));
}
}
return 0;
}
最终代码就段落。
祝你好运~
边栏推荐
猜你喜欢
随机推荐
移动云物联网预研及阿里云开发对比分析
AD PCB导出Gerber文件(非常详细的步骤)
[Arduino connected to GPS module (NEO-6M) to read positioning data]
AD8307对数检波器
使用Vercel托管自己的网站
GM7150,振芯科技,视频解码器,CVBS转BT656/601,QFN32,替换TVP5150/CJC5150
install 命令
联阳IT6561|IT6561FN方案电路|替代IT6561方案设计DP转HDMI音视频转换器资料
【Arduino connects SD card module to realize data reading and writing】
I2C无法访问ATEC508A加密芯片问题
【DS3231 RTC实时时钟模块与Arduino接口构建数字时钟】
使用buildroot制作根文件系统(龙芯1B使用)
【Arduino连接时钟模块在LCD1602上显示时间】
功率计,物联网,智能插座电路设计【毕业设计】
回溯法 & 分支限界 - 2
TC358860XBG BGA65 东芝桥接芯片 HDMI转MIPI
工业边缘网关究竟强大在哪里?
联阳(ITE)IT66021FN:HDMI转RGB芯片 3D 资料
使用批处理脚本修改hosts文件
【plang 1.4.3】定时器的使用








