【发布时间】:2017-08-12 19:41:21
【问题描述】:
我正在寻找执行以下操作的程序:
- 无限期等待,也就是在使用
./prog &调用时不会自行退出 - 在运行时具有尽可能小的内存占用,例如通过
pmap工具、程序和[stack]字段来衡量。
这个问题不是纯粹的学术问题,我正在研究memory scanner,我需要一个最小的例子来处理。
我能想到的最小的(在纯 C 中)是:
#include <unistd.h>
int main(int argc, char **argv)
{
pause();
return 0;
}
但我确信这可以与一些汇编/编译器/C 奥术魔法相形见绌,因为这个消耗了超过 180 KB 的程序+堆栈。
【问题讨论】:
-
实际上,您需要链接器魔术,使用自定义链接器脚本尽可能缩小所有内存空间。
-
#include <unistd.h> int main(int argc, char **argv) { return pause(); }将略微变小;-) -
@wildplasser :我真的不认为源大小会影响运行时大小。
-
@PeterJ 使用
while(1)没有区别。如果我可以有一些可在谷歌上搜索的关键字,我会很高兴,因为寻找如何减少堆栈大小只返回 Windows 专用答案。 -
我投票决定将此问题作为题外话结束,因为代码高尔夫问题在 Stack Overflow 上是题外话。