Windows相当于暂停()系统调用?
问题描述:
我想创建一个最小的Windows可执行文件,它的确没有什么都没有 - 而且尺寸最小。Windows相当于暂停()系统调用?
我所关心的只是在任务管理器中保留一个进程条目。
在Linux上,这非常简单(只需要2条汇编指令即可使用系统调用pause
)。我如何在Windows上获得类似的结果?
我试图保持可执行文件的大小到最低限度,我不想有10kB可执行文件从字面上什么都不做。
有没有办法在装配中实现这一点?正如我提到的,我宁愿不包括庞大的图书馆只是为了让这个过程“挂起”。
答
正如汉斯在评论中所建议的,Sleep(INFINITE)
可能是最简单的非忙等待。但是这意味着你必须用任务管理器终止进程来终止进程。
调用MessageBox
然后ExitProcess
如果您需要多次启动/停止此过程,则可能不那么麻烦。
你或许可以用Visual C把它降低到1昆明植物研究所++,如果你不使用的CRT(WinMainCRTStartup
与/Zl
和smaller alignment编译)
你可以得到它与装配略小,但它可能是不值得。
'foo:jmp foo'? – melpomene
@melpomene这是一个忙碌的等待。 'pause()'是一个系统调用,暂停进程直到信号到达。 – fuz
'睡眠(无限)'也不需要太多的代码。 –