C / C ++可启动程序,它从计算机上的目录中读取文件内容

时间:2013-09-29 19:24:13

标签: c++ c linux bios

我想创建一个可以存储在CD或闪存驱动器上的程序 如果存在,该程序应该能够读取目录中的文件内容。例如,在Linux桌面文件夹中搜索包含“123”的文件“test”。

但是如何创建可以直接从BIOS启动的程序呢?当我在linux上创建一个简单的hello-world可执行文件时,它将无法在非Linux操作系统上运行。

stdio.h和stdlib.h等库是否仍然可用?

4 个答案:

答案 0 :(得分:4)

使用现有的Linux发行版,其中大部分可以从CD /闪存驱动器启动,并提供如何创建新映像的说明。

只需将程序添加到启动顺序。

你必须弄清楚要挂载/搜索的驱动器 - 你说的是一个“目录”,没有提到什么设备......

答案 1 :(得分:2)

嗯,我不是这方面最好的专家,但我已经做了一些类似的事情,据我所知,你最好的方法是在数据介质的引导扇区中放置一个汇编程序(flash,CD-ROM)然后完成工作 - 这就是分区软件的工作原理。当从中等BIOS启动时,将开始在引导扇区执行代码,这是您可以启动的地方。但是,由于您似乎需要支持不同的文件系统,因此在组装时可能非常难。我在汇编时使用过FAT32但不确定Linux文件系统。也许有人在网上提供了一些汇编代码。

答案 2 :(得分:1)

唯一可以解决整个现有操作系统内核(如linux)的实用解决方案是重用grub。 Grub是一个32位保护模式可执行文件,并支持某些文件系统。我认为它有足够的文件系统实现,让你遍历目录和文件块。我非常怀疑它会让你通过C库API来实现它,你需要使用grub自己的内部API。而且它可以从BIOS启动。

答案 3 :(得分:0)

简短的回答是,除非你想编写自己的迷你操作系统,否则这是不可能的。您描述的功能涉及与硬件的大规模交互,这通常由提供良好的高级API的操作系统隐藏。

一个实用的解决方案可能是抓住众多迷你Linux发行版中的一个,并将他们的实时图像与您的应用程序捆绑在一起。

  
    

stdio.h和stdlib.h等库是否仍然可用?

  

它们不会,因为它们的实现通常由操作系统提供。