启动代码除了会将命令行参数传递给 main 外,还会从内核中获取到一张环境表。该环境表是由全局变量 environ 来指向的。environ 的类型定义如下: extern char ** environ; /* 这个定义在 unistd.h 头文件中 */ 但是在实际测试当中,使用environ指 ...
分类:
系统相关 时间:
2016-10-01 17:06:07
阅读次数:
199
堆上的空间不是连续的,栈上的空间是连续的。 使用malloc函数可以获得堆上的内存空间,注意一点虽然堆上的空间是不连续的,但是调用一次malloc函数分配的是还是连续的内存。 比如malloc(10)会在堆上找到一片有10个字节大小的连续空间分配给用户程序,然后再调用一次malloc(5)会在堆上找 ...
分类:
系统相关 时间:
2016-10-01 16:55:18
阅读次数:
175
在Linux中的c程序的典型内存分布中,之前提到的有 text段、data段、bss段、堆和栈这几部分,在笔记“麦子学院c语言->典型c语言程序的c内存分布”中介绍了。但是其实一个c语言进程的内存分布中不止是有这些区域,还有命令行参数、环境变量以及共享库和mmap映射区等区域。如下图所示 环境变量区 ...
分类:
系统相关 时间:
2016-10-01 16:48:24
阅读次数:
232
通常我们认为 main 函数是整个程序的入口,当然这也仅仅是我们的认为,实际上整个可执行文件的入口点并不是 main 函数,而是一个名为 _start 的标号。这一点在笔记 “ARM裸机->关于链接脚本中程序入口”中提到了。 在ARM裸机中,我们编写的 c 程序中也会有 main 函数,但是我们是会 ...
分类:
系统相关 时间:
2016-10-01 14:56:11
阅读次数:
366
进程终止可以分为 进程正常终止 和 进程异常终止 。 进程正常终止有以下几种情况: 在 main 函数返回 调用 exit 函数 调用 _exit 或者 _Exit 函数 最后一个线程从启动代码中返回 最后一个线程调用 pthread_exit 进程异常终止有以下几种情况: 调用 abort函数 进 ...
分类:
系统相关 时间:
2016-10-01 14:53:14
阅读次数:
215
线程概念 当我问别人什么是线程的时候,别人给我讲了一大堆线程如何创建,如何使用以及若干线程的高深问题,其实作为一个资深菜鸟,我就想问问,什么是线程而已,找了书中的一些概念总结了一下,多线程与操作系统中的多任务(进程)环境有很多相似之处。操作系统中的多任务为CPU将不同时间段分配给不同的进程,由于每个 ...
分类:
编程语言 时间:
2016-09-18 23:55:58
阅读次数:
351
进程:运行的程序线程:运行的函数 1.main() 启动例程 exit(int main(argc, argv));2.进程终止进程正常终止: <1>main() return; <2>exit(3); 1)调用终止处理程序 2)标准IO清理程序 <3>_exit(2) _Exit(2); <4>最 ...
分类:
系统相关 时间:
2016-09-10 19:08:22
阅读次数:
204
本文转载自:http://blog.csdn.net/yusiguyuan/article/details/14237277 在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别,可以说是完全不同。在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来 ...
分类:
编程语言 时间:
2016-08-15 20:43:12
阅读次数:
203
1.EPROCESS结构体 EPROCESS块来表示。EPROCESS块中不仅包含了进程相关了很多信息,还有很多指向其他相关结构数据结构的指针。例如每一个进程里面都至少有一个ETHREAD块表示的线程。进程的名字,和在用户空间的PEB(进程环境)块等等。EPROCESS中除了PEB成员块在是用户空间 ...
分类:
系统相关 时间:
2016-08-11 17:47:24
阅读次数:
302
本篇索引: 1、引言 2、终端登录 3、进程组 4、会话期 1、引言 通过上一篇的学习,我们已经知道了如何控制一个进程,fork函数从父进程中复制出子进程,我们可以通过exec函数让子进程运行新的程序,进程可以通过调用exit系列函数(return,_exit)终止,父进程可以利用wait或wait ...