首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么叫brk(0)?

为什么叫brk(0)?
EN

Unix & Linux用户
提问于 2013-05-13 11:38:51
回答 1查看 5.5K关注 0票数 8

在第一个shell上,我不带任何参数地运行命令tail

在第二个shell中,我使用strace来监视系统调用来杀死第一个尾。

代码语言:javascript
复制
qdii@nomada ~ $ strace kill 1713
execve("/bin/kill", ["kill", "1713"], [/* 82 vars */]) = 0
brk(0)                                  = 0x2533000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9dacfe8000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

我不知道brk命令,所以我查找了它,发现它改变了进程数据段的结束。kill为什么要这么做?特别是将数据段设置为0似乎没有什么意义。

EN

回答 1

Unix & Linux用户

发布于 2013-05-13 11:45:51

运行时库调用sbrk来读取数据段的当前结尾.sbrk是在brk syscall之上实现的;如您所见,使用无效地址调用brk只返回当前值。

票数 9
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/75638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档