我正在寻找一个程序,做以下事情:
无限期等待,aka在使用./prog &
调用时不会自行退出。
在运行时具有最小的内存占用,例如,由pmap
工具、程序和[stack]
字段测量。
这个问题不是纯学术性的,我正在研究一个memory scanner的问题,我需要一个最小的例子。
我能想到的最小的(纯c)是:
#include <unistd.h>
int main(int argc, char **argv)
{
pause();
return 0;
}
但我相信这可能与一些汇编/编译器/c的神秘魔法相形见绌,因为这一个吃掉了超过180kb的程序+堆栈。
最佳答案
尝试此程序:
#include <sys/syscall.h>
.text
.globl _start
.type _start,@function
_start:
mov $SYS_pause,%eax
syscall # pause();
ud2 # crash if pause() returns (should not happen)
保存在名为
pause.S
(大写)的文件中,然后按如下方式进行组装和链接:cc -c pause.S
ld -o pause pause.o
这显示为消耗了我机器上的一页内存。此页可能是堆栈空间的一页,因为文本段是从二进制文件映射的,因此不占用RAM。
关于c - 程序以最小的内存占用(在Linux上),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45654245/