栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

简单的shell原理以及实现

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单的shell原理以及实现

简单的shell原理以及实现

文章目录
    • 简单的shell原理以及实现
      • shell原理
      • 简单的shell实现

shell原理

首先在用户层面,bash进程会调用fork()系统调用创建一个新的进程,然后新的进程调用execve()系统调用执行ELF文件,原先的bash进程继续返回等待刚才启动的新进程结束,然后继续等待用户输入命令。execve()系统调用被定义在unistd.h,它的原型如下int execve(const char *filename, char *const argv[], char *const envp[])。它的三个参数分别是被执行的程序文件名、执行参数和环境变量,execlp()和execve()相似。

简单的shell实现
#include
#include
#include

int main() {
	char buf[1024] = { 0 };
	pid_t pid;
	while (1) {
		printf("minibash$");
		scanf("%s", buf);
		pid = fork();
		if (pid == 0) {
			if (execlp(buf, 0) < 0) {
				printf("exec errorn");
			}
		}
			else if (pid > 0) {
				int status;
				waitpid(pid, &status, 0);
			}
			else {
				printf("fork errorn");
			}
	}
	return 0;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号