📄 size.c
字号:
/* size - tell size of an object file Author: Andy Tanenbaum */#include <sys/types.h>#include <fcntl.h>#include <a.out.h>#include <stdlib.h>#include <unistd.h>#include <stdio.h>int heading; /* set when heading printed */int error;_PROTOTYPE(int main, (int argc, char **argv));_PROTOTYPE(void size, (char *name));int main(argc, argv)int argc;char *argv[];{ int i; if (argc == 1) { size("a.out"); exit(error); } for (i = 1; i < argc; i++) size(argv[i]); return(error);}void size(name)char *name;{ int fd, separate; long dynam, allmem; struct exec exec; if ((fd = open(name, O_RDONLY)) < 0) { fprintf(stderr, "size: can't open %s\n", name); error = 1; return; } if (read(fd, (char *)&exec, sizeof(struct exec)) != sizeof(struct exec)) { fprintf(stderr, "size: %s: header too short\n", name); error = 1; close(fd); return; } if (BADMAG(exec)) { fprintf(stderr, "size: %s not an object file\n", name); error = 1; close(fd); return; } separate = (exec.a_flags & A_SEP ? 1 : 0); dynam = exec.a_total - exec.a_text - exec.a_data - exec.a_bss; if (separate) dynam += exec.a_text; allmem = (separate ? exec.a_total + exec.a_text : exec.a_total); if (heading++ == 0) printf(" text\t data\t bss\t stack\tmemory\n"); printf("%6ld\t%6ld\t%6ld\t%6ld\t%6ld\t%s\n", exec.a_text, exec.a_data, exec.a_bss, dynam, allmem, name); close(fd);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -