linux进程

linux进程包含如下几个方面:
1:进程的控制(创建,等待子进程终止,执行程序,退出)
2:守护进程(什么是守护进程,守护进程的创建方式)
3:进程间的通信(管道,消息队列,消息,socket,共享内存)
4:进程间的同步(互斥锁,信号量,读写锁,文件锁)

关于fork函数你必须要知道的事情:

fork是一次调用,两次返回,根据返回值区别是子进程还是父进程。
而且fork生成的子进程是复制父进程的数据空间,栈,堆,以及文件句柄(注意是复制不是共享),所以linux采用COW技术,避免性能的浪费。
还有一个fork的进化版本,vfork函数,该函数用于创建一个子进程,而且该进程会立即执行exec操作,启动一个新的程序,所以其会共享父进程地址空间(不会产生复制开销),而且vfork会保证子进程的优先执行,直到其被调用exce或者exit后父进程才能执行。
clone函数可以选择性的复制父进程的资源,因此clone是创建线程的函数

int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);

这里fn是函数指针,我们知道进程的4要素,这个就是指向程序的指针, child_stack明显是为子进程分配系统堆栈空间,flags就是标志用来描述你需要从父进程继承那些资源, arg就是传给子进程的参数)。

关于进程的退出:

进程的终止方式比较多,包括函数return返回,或者调用exit退出,
而如果是多线程的进程的话,则最后一个线程的终止或者是调用exit退出会导致进程的退出。
进程的异常终止方式又分为三种:abort函数调用,还有收到异常信号,还有就是最后一个线程对取消请求作出响应。
注意:return函数在系统内部也是调用exit函数,而exit函数再调用_exit函数完成真正的退出操作,_exit不会清理缓冲区,会造成数据流失。
进程调用exit退出,会将退出代码存储到PCB中,然后发送SIGCHLD信号给父进程,自身成为僵尸进程,如果父进程调用wait函数则收到信号后会清除子进程的内存空间。
而如果父进程提前退出,则子进程会成为孤儿进程,孤儿进程由init进程托管。而init进程被设置为:无论哪个孤儿进程终止,init进程都会调用wait函数取得其终止状态,从而防止了大量孤儿进程的产生。

父进程如何知道子进程退出的呢?

父进程可以调用wait函数或者是waitpid函数(二者的区别在于:wait是只要有子进程退出就会处理,而waitpid会等待指定的子进程退出)

而wait函数的过程如下:
如果有子进程已经退出,则立即获取子进程的退出状态,并返回。而如果所有子进程都在运行则阻塞等待。如果没有子进程自然就出错返回了。

还有一个很重要的函数exec
执行一个新的程序,参数必须有三种:
1:可执行文件路径
2:参数
3:环境变量
exec族函数有多种变形,其实都是对这三种参数的变化:
比如可执行文件又分为相对路径和绝对路径
参数又分为,可以直接传递多个变长参数(以空指针结尾)或者是将参数放置于一个数组中。
还有环境变量,可以使用进程原有的环境变量,也可以将环境变量传递给函数。

linux的守护进程

什么是守护进程:守护进程随系统开机而启动,并且只能在系统关闭时终止,所以守护进程会在系统后台运行。
如何创建守护进程:看书

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281

推荐阅读更多精彩内容

  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 2,407评论 1 14
  • 姓名:殷晨阳 转载自:http://mp.weixin.qq.com/s/1xA8O6__LYe9P1eOVmE0...
    风雨无阻59阅读 635评论 0 0
  • 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单...
    晨起清风阅读 1,721评论 0 5
  • 一看表,马上就要九点了。又快下班了。一天的时间过的好快啊!想象着下班后回到家里,做到被窝里就迫不及待的拿出手机...
    益坚阅读 452评论 0 1