2017-04-02 64 views
1

我想創建一個最小的Windows可執行文件,它的確沒有什麼都沒有 - 而且尺寸最小。Windows相當於暫停()系統調用?

我所關心的只是在任務管理器中保留一個進程條目。

在Linux上,這非常簡單(只需要2條彙編指令即可使用系統調用pause )。我如何在Windows上獲得類似的結果?

我試圖保持可執行文件的大小到最低限度,我不想有10kB可執行文件從字面上什麼都不做。

有沒有辦法在裝配中實現這一點?正如我提到的,我寧願不包括龐大的圖書館只是爲了讓這個過程「掛起」。

+0

'foo:jmp foo'? – melpomene

+1

@melpomene這是一個忙碌的等待。 'pause()'是一個系統調用,暫停進程直到信號到達。 – fuz

+2

'睡眠(無限)'也不需要太多的代碼。 –

回答

1

正如漢斯在評論中所建議的,Sleep(INFINITE)可能是最簡單的非忙等待。但是這意味着你必須用任務管理器終止進程來終止進程。

調用MessageBox然後ExitProcess如果您需要多次啓動/停止此過程,則可能不那麼麻煩。

你或許可以用Visual C把它降低到1昆明植物研究所++,如果你不使用的CRT(WinMainCRTStartup/Zlsmaller alignment編譯)

你可以得到它與裝配略小,但它可能是不值得。