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