9 start命令(harib23i)

今天时间也不早了,差不多该结束了,不过30天大限将至,我们还剩好多东西没有做呢,因此今天大家就辛苦一下,再努把力吧。

我们在26.5节中提起过,Windows的命令行窗口里有一个start命令,它的功能是可以打开一个新的命令行窗口并运行指定的应用程序。讲这么多不如自己实践一下,在Windows中输入“start make run”试试看吧。

如果“纸娃娃系统”也有这个功能该多方便啊,那我们就来编写一个start命令吧。

本次的console.c节选

  1. void cons_runcmd(char *cmdline, struct CONSOLE *cons, int *fat, int memtotal)
  2. {
  3. (省略)
  4. } else if (strncmp(cmdline, "start ", 6) == 0) {
  5. cmd_start(cons, cmdline, memtotal);
  6. } else if (cmdline[0] != 0) {
  7. (省略)
  8. }
  9. void cmd_start(struct CONSOLE *cons, char *cmdline, int memtotal)
  10. {
  11. struct SHTCTL *shtctl = (struct SHTCTL *) *((int *) 0x0fe4);
  12. struct SHEET *sht = open_console(shtctl, memtotal);
  13. struct FIFO32 *fifo = &sht->task->fifo;
  14. int i;
  15. sheet_slide(sht, 32, 4);
  16. sheet_updown(sht, shtctl->top);
  17. /*将命令行输入的字符串逐字复制到新的命令行窗口中*/
  18. for (i = 6; cmdline[i] != 0; i++) {
  19. fifo32_put(fifo, cmdline[i] + 256);
  20. }
  21. fifo32_put(fifo, 10 + 256); /*回车键*/
  22. cons_newline(cons);
  23. return;
  24. }

好,完工了,很简单吧。我们来“make run”,输入“start color2”……哦,成功了!

9 start命令(harib23i) - 图1 9 start命令(harib23i) - 图2
执行start命令 执行后的样子