![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
进程
努力努力再努力r
这个作者很懒,什么都没留下…
展开
-
进程控制
进程创建 (1)fork #include #include pid_t fork(void);应用程序创建进程的唯一方法:fork()。子进程复制了父进程的存储映像。fork()调用成功时,子进程返回值为0,父进程返回值为他所创建的子进程的PID。 (2)exec系列 exec是一组函数用于产生一个新的程序映像,替换了当前进程的正文段、数据段、堆段和栈段 等待进程完成 #原创 2017-11-28 22:30:03 · 140 阅读 · 0 评论 -
进程环境——终止进程
终止进程 正常终止:main函数返回 或 exit() 或 _exit()。 异常终止:abort() 或 信号 注意: exit()和_exit()的区别是,_exit()直接到内核,exit()要完成一些清理工作然后调用_exit()到内核。 #include void exit(int status); 出口状态 参数status是出口状态。出口状态用来向父进程报告程序运原创 2017-11-25 23:06:06 · 182 阅读 · 0 评论 -
进程间通信
(1)匿名管道和FIFO有名管道。 (2)消息队列、信号量和共享存储。 (3)套接字。 管道——匿名管道 在命令行中使用:$cat file | grep "pipe" | more。这句话用了两个管道,分别使cat的标准输出成为grep的标准输入,grep的标准输出成为more的标准输入。 创建管道: #include int pipe(int fdes[2]);该函数在系统内部创原创 2017-12-05 14:55:19 · 107 阅读 · 0 评论 -
信号
信号 生成信号的事件:程序错误(0作除数)、外部事件(按下Ctrl-C)、显示请求(kill) 信号的生成可以是同步的,即在某个具体操作进行的同时产生,如溢出;也可以是异步的,即进程之外的事件生成的信号,任意时刻,无法预期。 信号发生时进程可以采取的三种动作:忽略,捕获,默认动作(流产、终止、忽略、挂起、继续)。 生成信号的函数: #include int raise(int sig)原创 2017-12-05 20:30:17 · 135 阅读 · 0 评论 -
进程环境——进程的存储空间
进程的存储空间 每当进程申请一片存储空间或者企图读写已分配的存储空间时,内核负责映射虚地址到物理地址,即负责虚地址空间至实地址空间的转换。 进程的地址空间 进程的地址空间由系统允许程序引用或访问的所有存储单元组成。进程的地址空间及其寄存器上下文,反映了进程所运行的当前状态。当进程用exec()装入一个新程序时,内核便为这个新程序建立地址空间。 进程的地址空间由若干不同的段组成,每个原创 2017-11-27 22:59:05 · 670 阅读 · 1 评论 -
进程与线程的区别
a.进程是资源分配的基本单位,线程是cpu调度,或者说是程序执行的最小单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。b.进程有独立的地址空间,比如在linux下面启动一个新的进程,系统必须分配给它独立的地址空间,建立众多的数据表来维护...转载 2018-03-01 16:52:33 · 144 阅读 · 0 评论