第1关:开发自己的 mysh 程序
时间: 2023-12-08 10:01:29 浏览: 101
第一关的任务是开发自己的 mysh 程序。
mysh 程序即是实现一个简单的命令行终端,类似于常见的操作系统终端。在这个终端中,用户可以输入命令,并且程序会执行相应的操作。
首先,要开发 mysh 程序,我们需要确定这个程序的功能和设计。根据题目要求,这个 mysh 程序应该能够接收用户输入的命令,并且执行对应的操作。因此,我们需要实现以下几个功能:
1. 接收用户输入的命令:程序需要能够读取用户在终端中输入的命令,并将其保存起来以备后续执行。
2. 解析命令:接收到用户输入的命令后,程序需要能够正确地解析命令,提取出其中的命令名和参数。这样才能确定要执行的具体操作。
3. 执行命令:根据解析出的命令名和参数,程序需要能够执行相应的操作。这可以通过调用系统提供的相关函数来实现。
4. 显示结果:当命令执行完毕后,程序需要能够将执行结果正确地显示给用户。
在实际编写代码时,可以按照以上功能的步骤进行实现。首先,可以使用相关的编程语言提供的函数来接收用户输入的命令,并将其保存在一个变量中。然后,可以使用字符串处理的相关函数来解析命令,提取出命令名和参数。接下来,可以根据命令名和参数来选择合适的函数进行操作的执行,并将执行结果保存在一个变量中。最后,可以使用相关的输出函数将结果显示给用户。
总之,第一关的任务是开发一个功能简单但完整的 mysh 程序。通过实现命令的接收、解析和执行等功能,可以完成这个任务。
相关问题
编写程序mysh.c,在其主函数中读取“命令字符串”(由第二个参数开始的所有命令行参数构成),在程序中创建一个子进程,然后在子进程中调用exec执行该命令字符串。如:用户输入“mysh ls -l”,则在子进程中执行“ls -l命令”。最后,父进程等待子进程执行完毕后以子进程的退出状态退出。
好的,根据您的要求,我来给您编写一个符合要求的mysh.c程序。
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[]) {
pid_t pid;
int status;
if (argc < 2) {
fprintf(stderr, "Usage: %s command [args ...]\n", argv[0]);
exit(1);
}
pid = fork();
if (pid < 0) {
perror("fork");
exit(1);
} else if (pid == 0) { // child process
if (execvp(argv[1], &argv[1]) < 0) {
perror("execvp");
exit(1);
}
} else { // parent process
if (waitpid(pid, &status, 0) < 0) {
perror("waitpid");
exit(1);
}
if (WIFEXITED(status)) {
printf("Child process exited with status %d\n", WEXITSTATUS(status));
}
}
return 0;
}
```
这个程序通过 `fork` 创建了一个子进程,然后在子进程中调用 `execvp` 执行命令字符串。在父进程中,使用 `waitpid` 等待子进程执行完毕,并获取子进程的退出状态。最后,将子进程的退出状态输出到标准输出。
import matplotlib.pyplot as plt import jieba import wordcloud py = plt.imread('E:/shixun/girl.jpg') #读取预先准备的词云形状图片 f = open('E:/shixun/text.txt', encoding='utf-8') #打开预先准备的词云图文本文件 txt = f.read() #读取图文本文件中的内容#对读取到的文本内容进行分词 txt_list = jieba.lcut(txt) #将分词列表转成字符串,分隔符为空格 string = ''.join(txt_list) #词云图设置 wc = wordcloud.WordCloud( width=1000, height=700, background_color='white', font_path='mysh.ttc', #词云图中的文字字体 mask=py, #所使用的的词云图片 scale=15, stopwords={'的', '了'} #停用词,即不希望出现在词云图中的词 ) #给词云输入文字 wc.generate(string)报错Only supported for TrueType fonts怎么修改
这个错误是因为你使用了一个不支持的字体文件。你需要将字体文件路径改为一个支持的 TrueType 字体文件。例如,你可以使用 Windows 系统自带的 "simhei.ttf" 字体,将字体文件路径改为 "C:/Windows/Fonts/simhei.ttf"。修改的代码如下:
```python
import matplotlib.pyplot as plt
import jieba
import wordcloud
py = plt.imread('E:/shixun/girl.jpg') #读取预先准备的词云形状图片
f = open('E:/shixun/text.txt', encoding='utf-8') #打开预先准备的词云图文本文件
txt = f.read() #读取图文本文件中的内容
#对读取到的文本内容进行分词
txt_list = jieba.lcut(txt)
#将分词列表转成字符串,分隔符为空格
string = ''.join(txt_list)
#词云图设置
wc = wordcloud.WordCloud(
width=1000,
height=700,
background_color='white',
font_path='C:/Windows/Fonts/simhei.ttf', #改为一个支持的 TrueType 字体文件
mask=py, #所使用的的词云图片
scale=15,
stopwords={'的', '了'} #停用词,即不希望出现在词云图中的词
)
#给词云输入文字
wc.generate(string)
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)