/images/avatar.webp

Windows系统及编程 - 调用脚本的几种方式

Windows C++ 执行脚本的几种方法总结 一、WinExec微软的官方给出的建议是: 注意 这个函数只是为了兼容16位Windows系统而提供的,开发中应用程序还是应该使用CreateProcess函数。 但是我只是想运行一个vbe、bat脚本,来看看使用WinExec是否可行… 语法 1 2 3 4 UINT WinExec( [in] LPCSTR lpCmdLine, [in] UINT uCmdShow ); 参数 lpCmdLine: 这是一个入参,它是要执行的应用程序的命令行,类似于"D:\notepad++.exe -help" 之类,是可以加应用自己的参数的。如果lpCmdLine中没有包含路径,系统将按照下面的顺序来查找这个可执行文件: 主调进程.exe文件所在的目录。 主调进程的当期目录 Windows 系统目录,即GetSystemDirectory返回的System32子文件夹。 Windows目录,即GetWindowsDirectory返回的目录 PATH环境变量中列出的目录 uCmdShow: 也是一个入参,这是一个显示选项,详细的显示设置查看ShowWindows函数 返回值 函数成功,返回值是一个大于31的数。如果失败,返回值是下面的参数: 返回错误码 错误码描述 0 系统资源不够或者内存不够 ERROR_BAD_FORMAT .exe文件是非法的 ERROR_FILE_NOT_FOUND 指定的文件没有找到 ERROR_PATH_NOT_FOUND 指定的路径没有找到 提示 提示 当启动的进程调用调用GetMessage函数或者达到超时时,WinExec函数返回。为了避免等待超时延时,请在调用WinExec启动的任何进程中尽快调用GetMessage函数。:( 安全方面评论

文件系统 - 文件系统实现

散列表(哈希表)能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。也就是说把关键字映射到一个表中的位置来直接访问记录,以加快访问速度。 通常我们把关键字称为Key,把对应的记录称为value,通过Key访问一个映射表来得到value的地址。这个映射表叫作散列函数或者哈希函数,存放记录的数组叫作散列表。 其中有个情况,就是通过不同的Key,可能访问到同一个地址,这种现象叫作碰撞(Collision)。而通过某个Key一定会到唯一的Value地址。 文件系统 一、文件系统的实现 文件和目录是怎样存储。 磁盘空间是怎么样管理。 怎样使系统有效而可靠地工作。 1.1、文件系统布局文件系统存放在磁盘上。多数磁盘会划分为一个或多个分区,每个分区中有一个独立的文件系统。磁盘的0号扇区称为主引导记录(Master Boot Record, MBR)。用来引导计算机。在MBR的结尾是分区表。该表给出每个分区的起始和结束地址。表中的一个分区被标记为活动分区。在计算机被引导时,BIOS读入并执行MBR。MBR做的第一件事情使确定活动分区,读入它的第一个块,称为引导块(boot block),并执行之。引导块中的程序将装载该分区中的操作系统。为统一,每个分区都从一个引导块开始,即使它不包含一个可启动的操作系统。不过未来这个分区也许会有一个操作系统呢。 linux BIOS开机自检简绍 linux BIOS开机自检简绍 前面提到,服务器通电后,会直接进入 BIOS,BIOS 全称 Basic Input/Output System,中文可译为基本输入/输出系统。简单地理解 BIOS,它就是固化在主板上一个 ROM(只读存储器)芯片上的程序,主要保存计算机的基本输入/输出信息、系统设置信息、开机自检程和系统自启动程序,用来为计算机提供最底层和最直接的硬件设置与控制。也就是说,BIOS 是硬件与软件之间的接口,而且是非常基本的接口,BIOS 提供了一组基本的操作系统使用的指令,系统启动的成功与否,依赖于 BIOS。 BIOS 的初始化主要完成以下 3 项工作: 第一次检查计算机硬件和外围设备(第二次自检由内核完后,后续会讲),例如 CPU、内存、风扇灯。当 BIOS 一启动,就会做一个自我检测的工作,整个自检过程也被称为 POST(Power On Self Test)自检。 如果自检没有问题,BIOS 开始对硬件进行初始化,并规定当前可启动设备的先后顺序,选择由那个设备来开机(通常是硬盘)。 选择好开启设备后,就会从该设备的 MBR(主引导目录)中读取 Boot Loader(启动引导程序)并执行。启动引导程序用于引导操作系统启动,Linux 系统中默认使用的启动引导程序是 GRUB。 当 MBR 被加载到 RAM 之后,BIOS 就会将控制权交给 MBR,进入系统引导的第二阶段。 除了引导块之外,磁盘分区的布局是随着文件系统的不同而变化的。文件系统经常包含有如图所示的一些项目: 一个大概的文件系统" 一个大概的文件系统 第一个是超级块(superblock), 超级块包含文件系统的所有关键参数,在计算机启动时,或者在该文件系统首次使用时,超级块会被读入内存。超级块中典型信息包括:确定文件系统类型用的魔数,文件系统中块的数量以及其他重要的管理信息。 接着是文件系统中空闲块的信息,例如,可以用位图或指针列表的形式给出。后面也许跟随的是一组i节点,这是一个数据结构数组,每个文件一个,i节点说明了文件的方方面面。接着可能是根目录,它存放文件系统目录树的根部。最后,磁盘的其他部分存放了其他所有的目录和文件。 1.2、文件的实现文件存储实现的 关键问题是记录各个文件分别用到哪些磁盘块。不同操作系统采用不同的方法。这一节我们讨论研究其中的一些方法。 1.2.1、连续分配最简单的分配方案是把每个文件作为一连串连续数据块存储在磁盘上。所以,在块大小为1KB的磁盘上,50KB的文件要分 配50个连续的块。对于磁盘块大小为2KB的磁盘,将分配25个连续的块。