当前位置:网站首页>进程(番外):自定义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;
}
最终代码就段落。
祝你好运~
边栏推荐
- 汇编语言跳转指令总结
- 【MQ-3 酒精检测器与 Arduino检测酒精】
- Comparative analysis of OneNET Studio and IoT Studio
- 简单的RC滤波电路
- 【Arduino connects SD card module to realize data reading and writing】
- 兼容C51与STM32的Keil5安装方法
- Mac安装MySQL详细教程
- 如何用 Lightly 进行 Debug 断点调试?
- R语言 —— 多元线性回归
- [Arduino connected to GPS module (NEO-6M) to read positioning data]
猜你喜欢
随机推荐
Comparative analysis of OneNET Studio and IoT Studio
倍福ET2000侦听器使用
LL(1)文法 :解决 if-else/if-else 产生式二义性问题
【树莓派入门(2)树莓派的远程控制】
本地数据库 sqlite3 编译和使用
D类音频功放NS4110B电路设计
振芯GM7123C:功能RGB转VGA芯片方案简介
IDEA2021.2安装与配置(持续更新)
【plang 1.4.6】Plang高级编程语言(发布)
TQP3M9009电路设计
idea中创建jsp项目详细步骤
【科普贴】I2C接口详解——偏硬件解析
【Arduino连接时钟模块在LCD1602上显示时间】
n皇后问题(回溯法)
NSIS来自己设定快捷方式的图标
I2C无法访问ATEC508A加密芯片问题
[Arduino uses a rotary encoder module]
uniCloud使用
GM8284DD,GM8285C,GM8913,GM8914,GM8905C,GM8906C,国腾振芯LVDS类芯片
Typora使用