APUE 第七章(看完)

 

exec先调用启动例程,启动例程从内核取得命令行参数

退出函数

exit

_exit 或者_Exit

echo $? 获取函数(比如main函数)的返回值

exit会调用一些函数,称为终止处理程序,而atexit用来登记这些函数

内核使程序执行的唯一方法是调用一个exec函数 

 环境表

如下,为一堆键值对

 空间分布,栈一般都在高处(Linux从0xC0000000开始),正文一般是CPU机器指令(linux从0x08048000开始),每次函数调用都会生成栈帧,我的理解是,一个函数调用对应一个栈帧

相关的linux命令如下:,其中text代表正文段,即CPU执行的机器指令

使用共享库的text,data,bss均大大减小,因为可执行文件不再需要包含公共的库函数(用户态函数,比如malloc)

data代表已经初始化的数据,比如函数体外的:

int maxlen = 100;

,bss代表未初始化的数据,比如函数体外的:

long a[1000];


root@ubun2004:/home/learnApue/apue.3e/environ# ./echoarg arg1 Test foo
argv[0]: ./echoarg
argv[1]: arg1
argv[2]: Test
argv[3]: foo


root@ubun2004:/home/learnApue/apue.3e# size /usr/bin/cc /bin/sh 
   text	   data	    bss	    dec	    hex	filename
1131683	  15176	  15048	1161907	 11bab3	/usr/bin/cc
 114971	   4856	  11312	 131139	  20043	/bin/sh






root@ubun2004:/home/learnApue/apue.3e/environ# gcc -static  doatexit.c  //不使用共享库
root@ubun2004:/home/learnApue/apue.3e/environ# ls -l a.out
-rwxr-x--- 1 root root 876704 Sep  5 04:45 a.out
root@ubun2004:/home/learnApue/apue.3e/environ# size a.out //使用共享库
   text	   data	    bss	    dec	    hex	filename
 764793	  20996	   6016	 791805	  c14fd	a.out



root@ubun2004:/home/learnApue/apue.3e/environ# gcc  doatexit.c 
root@ubun2004:/home/learnApue/apue.3e/environ# ls -l a.out
-rwxr-x--- 1 root root 17568 Sep  5 04:45 a.out
root@ubun2004:/home/learnApue/apue.3e/environ# size a.out
   text	   data	    bss	    dec	    hex	filename
   4908	    688	     48	   5644	   160c	a.out

环境变量

getenv(name) 获取指定name的环境变量值

putenv/setenv 设置环境变量

unsetenv(name) 删除指定name环境变量的定义

看到unsetenv

open_data 7.11顶部,到底是哪里出了问题,IO的stdin和下一个调用函数,共同使用了同一个存储空间对吗,我觉得是的,这样才会冲突和混乱

函数getrlimit和setrlimit

软限制<=硬限制

总结

这一节,主要介绍了函数如何启动,函数调用的栈空间分配,环境变量,以及资源限制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值