sbrk系统调用unix

我学习像malloc使用sbrk系统调用。 但是,有人说,sbrk已被弃用。 现在使用mmap2系统调用分配内存的天malloc。 那么,是否有像(ls,cat,grep,sed)这样的使用sbrk系统调用的命令。 例如:

mohanraj@ltsp63:~/Development/chap8$ strace -c ls
a.out  files  flush.c  fopen.c      ld.c  lld.c  malloc.c  opendir1.c  t2.c  t3.c  t.c  test.c
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
  -nan    0.000000           0        12           read
  -nan    0.000000           0         1           write
  -nan    0.000000           0        13           open
  -nan    0.000000           0        16           close
  -nan    0.000000           0         1           execve
  -nan    0.000000           0         1           time
  -nan    0.000000           0         9         8 access
  -nan    0.000000           0         3           brk
  -nan    0.000000           0         3           ioctl
  -nan    0.000000           0         1           readlink
  -nan    0.000000           0         5           munmap
  -nan    0.000000           0         1           uname
  -nan    0.000000           0        11           mprotect
  -nan    0.000000           0         1           _llseek
  -nan    0.000000           0         1           getsid
  -nan    0.000000           0         2           rt_sigaction
  -nan    0.000000           0         1           rt_sigprocmask
  -nan    0.000000           0         1           getcwd
  -nan    0.000000           0         1           getrlimit
  -nan    0.000000           0        28           mmap2
  -nan    0.000000           0         1           stat64
  -nan    0.000000           0        16           fstat64
  -nan    0.000000           0         1           getuid32
  -nan    0.000000           0         2           getdents64
  -nan    0.000000           0         1         1 futex
  -nan    0.000000           0         1           set_thread_area
  -nan    0.000000           0         1           set_tid_address
  -nan    0.000000           0         1           statfs64
  -nan    0.000000           0         1           openat
  -nan    0.000000           0         1           set_robust_list
  -nan    0.000000           0         1           socket
  -nan    0.000000           0         1           connect
  -nan    0.000000           0         1           send
------ ----------- ----------- --------- --------- ----------------
100.00    0.000000                   141         9 total
mohanraj@ltsp63:~/Development/chap8$

以上输出显示ls命令使用上述系统调用来执行输出。 同样,任何使用sbrk系统调用的命令,有没有什么是什么?

提前致谢。


sbrk不是linux中的系统调用。 这是一个在libc中使用brk系统调用实现的库函数。 你的strace显示正在使用的brk


如果在libc中 malloc实现被重定向到mmap而不是sbrk 。 然后每次调用malloc都会导致mmap。 只有在用户级应用程序中明确使用sbrk时(通常使用malloc)

链接地址: http://www.djcxy.com/p/86517.html

上一篇: sbrk system call in unix

下一篇: Force free() to return malloc memory back to OS