回答
我不明白你的问题。你开始一件新事物,你可以使用任何你想要的名字。 Project的概念通常针对某些IDE。
要编写一个外壳,首先必须熟悉C编程语言,并理解好几个重要的Linux系统调用(如fork
,execve
,pipe
,chdir
,dup
等)。所以先阅读这本好书。系统调用通过标准的C库可用,您不需要链接额外的一个。
而且,研究小壳的源代码(如sash)可能会对你有很大的帮助。
不幸的是,不是一些神奇的emulateShell()
API调用就可以弥补这方面,你将需要考虑(在大深度)像exec
,fork
,popen
,signal/sigaction
事物和其他主机过程控制的东西。
另外,您可能需要参与终端处理等,例如fcntl
和ioctl
。
这不是一个真正可以全面覆盖的主题是一个这样大小的答案框。我会建议试图在较小的工作中将其分解,以使您的(和我们)的工作更轻松。
也许从一个简单的程序开始,该程序接受来自用户的命令并将它们分解为令牌执行。那将是一个好的第一步。
我不确定他需要* popen *,他需要了解* pipe *系统调用(等等)。 * popen *就像* system *,它使用一个shell,不提供一个。 –
实际上,这是一个有趣的问题,对于某些知道Unix的IO机制的人来说,这可能是一个很好的练习。正如您所知,Shell负责解释输入,调用系统调用并显示输出。这样的程序运行在内核之上。因此,该练习可能会给出许多关于流程执行族的信息,如exec*
。
这里是one tutorial c为你在C中覆盖,这one in Python将帮助你设计一个理解的快速原型。
shell不会将其输入传递给内核。它解释它的输入并相应调用系统调用。 –
我简直太简单了。更正它。 –
- 1. CGI C语言编程
- 2. RPC编程语言C
- 3. D编程语言中的C#事件
- 4. C编程语言中的时间戳
- 5. 将shell脚本转换为C#编程语言
- 6. 编程语言
- 7. 编程语言的原语
- 8. C语言和多线程编程
- 9. 用Linux编程C语言的参数
- 10. 在C++编程语言中返回2语句的含义
- 11. .NET编程语言
- 12. java编程语言
- 13. Siri编程语言
- 14. Scheme编程语言
- 15. NesC编程语言
- 16. SIMD编程语言
- 17. 编程语言语法
- 18. 使用fork进行C语言编程()
- 19. 用C#创建编程语言
- 20. c编程语言 - declare()函数
- 21. 使用gcc扩展c编程语言
- 22. C语言视频编程,linux
- 23. C语言编程 - 类项目
- 24. 以C语言编程终止scanf
- 25. C语言编程 - 多行注释
- 26. C语言编程输入错误
- 27. 计算采用c编程语言
- 28. 递归在C语言编程
- 29. 日历在C编程语言作业
- 30. 混合汇编语言和C程序
你想让图书馆做什么? – trojanfoe
请说明一下,你想编写一个完整的shell程序?,你想从一个程序中调用一个shell命令?,你想将数据传递给一个shell? –
只是libc,这就够了。 –