写一个自己的Unix Shell(3)实现cd和exit命令

在《写一个自己的Unix Shell(2)将读入的字符变成命令》这篇文章中,我们实现了将输入的字符转成命令的功能。例如当我们输入ls时,我们的Shell程序会开辟一个子进程,将ls字符串转成字符串数组,然后调用execvp()函数去环境变量PATH中的目录中查找ls对应的可执行文件并执行它。对于其他常见的命令也是这个过程,但有两个命令除外,那就是cd命令和exit命令。我们知道:cd命令的作用是切换目录,exit命令是退出Shell程序。 对于cd命令来说,它切换的是Shell程序的工作目录,什么是工作目录?工作目录就是你现在在操作系统的哪个目录下,比如你在/root/目录下,那么/root
阅读更多

写一个自己的Unix Shell(2)将读入的字符变成命令

在《写一个自己的UnixShell(1)搭建一个框架》这篇文章中,我们实现了一个基本的Shell程序框架,从终端中不断读取一行字符并打印的功能。接下来我们实现将读取的字符变为命令,在终端可以看到我们命令执行的结果的功能。就像下面图示中这样。 进入主题前,我们先看几个前置知识 什么是程序,什么是进程 简单来说,程序就是存放在磁盘中的可以被我们执行的文件和一些其他的资源文件的集合,它们就静静地躺在磁盘中,等待着被运行。而进程就是进行中的程序,已经运行起来的程序。进程之间是相互独立的,比如运行起来的QQ和运行起来的微信,它们俩都是进程,但互不干扰,相互独立。 进程也可以创建进程 正如人可以生
阅读更多

写一个自己的Unix Shell(1)搭建一个框架

熟悉 Unix/Linux 系统的朋友都清楚,我们通常都通过 Shell 程序和 Unix/Linux 系统打交道,比如查看文件列表,我们会输入ls命令,切换目录,我们会输入cd命令等等,那么 Shell 程序是如何实现的呢?下面就让我们用C语言写一个自己的 Shell 程序。 第一步:搭建一个框架 我们写一个框架,实现下图的样子。 从上面的图中我们可以看到:当执行我们的myshell程序后,当我们只键入回车键,空格等这些空白内容时,程序不断输出 myshell# 字符串,当我们输入一行非空白内容再按回车时,程序会打印我们输入的内容,然后再打印myshell# 字符串后等待下一次输入。
阅读更多

RFB协议原理分析

RFB(The Remote Framebuffer Protocol) 协议介绍 RFB的中文名字叫做”远程帧缓冲区协议”, 它用于访问远程的用户界面, 允许客户端查看和操作远程的窗口系统。它主要是将远程窗口系统的帧缓冲区(可以理解我屏幕中的像素区)发送给客户端,因而客户端就可以看到远程窗口的界面了。客户端也会向运行RFB协议的服务端发送一些事件,比如鼠标事件,键盘事件,这样就客户端就可以操作远程的窗口系统了。VNC(Virtual Network Computing)就是基于的RFB协议,它用于远程控制桌面,类似于蒲公英。 RFB协议的监听端口 RFB协议的默认监听端口位 5190,对于
阅读更多
dark

sans