Linux中为什么要创建子进程? 什么是父进程子进程?为什么要创建子进程?什么是线程,请结合常...

\u7236\u8fdb\u7a0b\u4e3a\u4ec0\u4e48\u8981\u521b\u5efa\u5b50\u8fdb\u7a0b

\u5728\u7a0b\u5e8f\u8bbe\u8ba1\u65f6\uff0c\u67d0\u4e00\u4e2a\u5177\u4f53\u7684\u529f\u80fd\u6a21\u5757\u53ef\u4ee5\u901a\u8fc7\u51fd\u6570\u6216\u662f\u7ebf\u7a0b\u7b49\u4e0d\u540c\u7684\u5f62\u5f0f\u6765\u5b9e\u73b0\u3002\u5bf9\u4e8e\u540c\u4e00\u8fdb\u7a0b\u800c\u8a00\uff0c\u8fd9\u4e9b\u51fd\u6570\u3001\u7ebf\u7a0b\u90fd\u662f\u5b58\u5728\u4e8e\u540c\u4e00\u4e2a\u5730\u5740\u7a7a\u95f4\u4e0b\u7684\uff0c\u800c\u4e14\u5728\u6267\u884c\u65f6\uff0c\u5927\u591a\u53ea\u5bf9\u4e0e\u5176\u76f8\u5173\u7684\u4e00\u4e9b\u6570\u636e\u8fdb\u884c\u5904\u7406\u3002\u5982\u679c\u7b97\u6cd5\u5b58\u5728\u67d0\u79cd\u9519\u8bef\uff0c\u5c06\u6709\u53ef\u80fd\u7834\u574f\u4e0e\u5176\u540c\u5904\u4e00\u4e2a\u5730\u5740\u7a7a\u95f4\u7684\u5176\u4ed6\u4e00\u4e9b\u91cd\u8981\u5185\u5bb9\uff0c\u8fd9\u5c06\u9020\u6210\u6bd4\u8f83\u4e25\u91cd\u7684\u540e\u679c\u3002\u4e3a\u4fdd\u62a4\u5730\u5740\u7a7a\u95f4\u4e2d\u7684\u5185\u5bb9\u53ef\u4ee5\u8003\u8651\u5c06\u90a3\u4e9b\u9700\u8981\u5bf9\u5730\u5740\u7a7a\u95f4\u4e2d\u7684\u6570\u636e\u8fdb\u884c\u8bbf\u95ee\u7684\u64cd\u4f5c\u90e8\u5206\u653e\u5230\u53e6\u5916\u4e00\u4e2a\u8fdb\u7a0b\u7684\u5730\u5740\u7a7a\u95f4\u4e2d\u8fd0\u884c\uff0c\u5e76\u4e14\u53ea\u5141\u8bb8\u5176\u8bbf\u95ee\u539f\u8fdb\u7a0b\u5730\u5740\u7a7a\u95f4\u4e2d\u7684\u76f8\u5173\u6570\u636e\u3002\u5177\u4f53\u7684\uff0c\u53ef\u5728\u8fdb\u7a0b\u4e2d\u901a\u8fc7CreateProcess\uff08\uff09\u51fd\u6570\u53bb\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u5b50\u8fdb\u7a0b\u5728\u5168\u90e8\u5904\u7406\u8fc7\u7a0b\u4e2d\u53ea\u5bf9\u7236\u8fdb\u7a0b\u5730\u5740\u7a7a\u95f4\u4e2d\u7684\u76f8\u5173\u6570\u636e\u8fdb\u884c\u8bbf\u95ee\uff0c\u4ece\u800c\u53ef\u4ee5\u4fdd\u62a4\u7236\u8fdb\u7a0b\u5730\u5740\u7a7a\u95f4\u4e2d\u4e0e\u5f53\u524d\u5b50\u8fdb\u7a0b\u6267\u884c\u4efb\u52a1\u65e0\u5173\u7684\u5168\u90e8\u6570\u636e\u3002\u5bf9\u4e8e\u8fd9\u79cd\u60c5\u51b5\uff0c\u5b50\u8fdb\u7a0b\u6240\u4f53\u73b0\u51fa\u6765\u7684\u4f5c\u7528\u540c\u51fd\u6570\u548c\u7ebf\u7a0b\u6bd4\u8f83\u76f8\u4f3c\uff0c\u53ef\u4ee5\u770b\u6210\u662f\u7236\u8fdb\u7a0b\u5728\u8fd0\u884c\u671f\u95f4\u7684\u4e00\u4e2a\u8fc7\u7a0b\u4e3a\u6b64\uff0c\u9700\u8981\u7531\u7236\u8fdb\u7a0b\u6765\u638c\u63e1\u5b50\u8fdb\u7a0b\u7684\u542f\u52a8\u3001\u6267\u884c\u548c\u9000\u51fa\u3002\u521b\u5efa\u5b50\u8fdb\u7a0b\u624d\u80fd\u591a\u9053\u7a0b\u5e8f\u5e76\u53d1\u6267\u884c\uff0clinux\u521d\u59cb\u5316\u7684\u65f6\u5019\u4f1a\u521b\u5efaswap\u8fdb\u7a0b\u3001\u7136\u540e\u662finit\u8fdb\u7a0b\u548c\u4e00\u4e2ainit\u8fdb\u7a0b\u7684\u5144\u5f1f\u8fdb\u7a0b\uff0c\u6240\u6709\u7684\u8fdb\u7a0b\uff08\u8fd0\u884c\u7684\u7a0b\u5e8f\uff09\u90fd\u662f\u4ece\u7236\u8fdb\u7a0b\u6f14\u5316\u51fa\u53bb\u7684\uff0c\u4f60\u53ef\u4ee5\u770b\u770bproc\u91cc\u7684\u4e1c\u897f\uff0c\u5199\u4e2a\u7a0b\u5e8f\u6253\u5370\u51fa\u5404\u4e2a\u8fdb\u7a0b\u7684\u7236\u8fdb\u7a0b\uff5e\u7f51\u4e0a\u6709\u6e90\u4ee3\u7801\u7684\uff0c\u8981\u7684\u8bdd\u6211\u7ed9\u4f60\u3002\u54b1\u8981\u5148\u641e\u660e\u767d\u8fdb\u7a0b\u7a76\u7adf\u662f\u4ec0\u4e48\uff0c\u8fdb\u7a0b\u662f\u8d44\u6e90\u5206\u914d\u7684\u5355\u4f4d\uff0c\u662f\u8fd0\u884c\u7684\u7a0b\u5e8f\uff0c\u65e2\u7136\u662f\u8fd0\u884c\u7684\u7a0b\u5e8f\uff0c\u4e00\u4e2a\u8fdb\u7a0b\u81ea\u7136\u53ea\u80fd\u4ee3\u8868\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u591a\u9053\u7a0b\u5e8f\u8bbe\u8ba1\u81ea\u7136\u800c\u7136\u5c31\u6709\u4e86\u591a\u8fdb\u7a0b\u7684\u6982\u5ff5\u3002

\u95ee\u9898\u4e00\uff1a\u7236\u8fdb\u7a0b\u548c\u5b50\u8fdb\u7a0b\u662f\u7528\u6765\u63cf\u8ff0\u7ee7\u627f\u4e0a\u7684\u5173\u7cfb\u3002
\u6bd4\u5982\u5728Windows\u4e0b\u9762\u6709\u4e00\u4e2a\u4f60\u7684\u8fdb\u7a0b\uff0c\u8fdb\u7a0b\u540d\u53eb\u201c\u6797\u5fd7\u73b2\u201d\uff0c\u7136\u540e\u4f60\u901a\u8fc7\u9f20\u6807\u554a\u4ec0\u4e48\u7684\u628aQQ\u542f\u52a8\u4e86\uff0c\u8fd9\u4e2aQQ\u5c31\u662f\u4f60\u7684\u5b50\u8fdb\u7a0b"\u6797\u5fd7\u73b2\u7684QQ"\u3002
\u95ee\u9898\u4e8c\uff1a\u9996\u5148\u8fdb\u7a0b\u662f\u4e00\u4e2a\u7a0b\u5e8f\u7684\u5b8c\u6574\u7684\u6267\u884c\u8fc7\u7a0b\u3002\u81f3\u4e8e\u4e3a\u4ec0\u4e48\u521b\u5efa\u5b50\u8fdb\u7a0b\u53ef\u80fd\u6709\u5982\u4e0b\u7684\u539f\u56e0
1\uff1a\u6807\u8bc6\u8fd9\u4e2a\u8fdb\u7a0b\u662f\u5c5e\u4e8e\u8c01\u7684\u3002
2\uff1a\u4fbf\u4e8e\u7ba1\u7406\u3002\u53ef\u4ee5\u4e00\u6b21\u6027\u7684\u628a\u67d0\u4e9b\u8fdb\u7a0b\u4e00\u8d77kill\u3002
3\uff1a\u8fdb\u7a0b\u542f\u52a8\u4e4b\u524d\u53ef\u80fd\u9700\u8981\u7236\u8fdb\u7a0b\u4e3a\u4ed6\u505a\u4e00\u4e9b\u521d\u59cb\u5316\u4e00\u7c7b\u7684\u64cd\u4f5c\u3002
\u95ee\u9898\u4e09\uff1a\u7ebf\u7a0b\u662f\u8f7b\u91cf\u7ea7\u7684\u8fdb\u7a0b\u3002\u7ebf\u7a0b\u5171\u4eab\u8fdb\u7a0b\u7684\u6240\u6709\u8d44\u6e90\u3002\u7ebf\u7a0b\u662f\u53ef\u4ee5\u5360\u6709CPU\u7684\u6700\u5c0f\u5355\u4f4d\u3002
\u8fc5\u96f7\u5e94\u8be5\u5c31\u662f\u591a\u7ebf\u7a0b\u7684\u3002\u597d\u5904\u5982\u4e0b\uff1a
1.\u521b\u5efa\u7ebf\u7a0b\u7684\u7cfb\u7edf\u5f00\u9500\u6bd4\u521b\u5efa\u8fdb\u7a0b\u7684\u7cfb\u7edf\u5f00\u9500\u8981\u5c0f\u5f97\u591a\u3002
2.\u591a\u7ebf\u7a0b\u6709\u5229\u4e8e\u591a\u4e2atcp\u8fde\u63a5\u4e00\u8d77\u4e0b\u8f7d\u6587\u4ef6\uff0c\u6216\u8005\u6587\u4ef6\u5206\u6bb5\uff0c\u6bcf\u4e2a\u7ebf\u7a0b\u8d1f\u8d23\u4e0b\u8f7d\u6587\u4ef6\u7684\u4e00\u5c0f\u90e8\u5206\u3002
\u591a\u4e2a\u90e8\u5206\u540c\u65f6\u4e0b\u8f7d\u3002

创建子进程才能多道程序并发执行,linux初始化的时候会创建swap进程、然后是init进程和一个init进程的兄弟进程,所有的进程(运行的程序)都是从父进程演化出去的,你可以看看proc里的东西,写个程序打印出各个进程的父进程~网上有源代码的,要的话我给你

咱要先搞明白进程究竟是什么,进程是资源分配的单位,是运行的程序。既然是运行的程序,一个进程自然只能代表一个程序,多道程序设计自然而然就有了多进程的概念。举个例子,多进程(线程)下载,我们可以给一个需要下载的资源分片,多个进程从不同的片分时下载,这样就提高了下载速度,因为对一个程序分配的更多的资源,你试试开迅雷的时候打开个网页,保证你觉得奇卡无比,因为网络带宽(资源)被迅雷的多个进程占用了。其实在本地的多进程程序并不多见,比如word算是个典型的多进程程序,有个进程接受你的键盘输入,有拼写检查进程,有显示进程等等。大多数都用到网络上了,比如服务器。一台服务器要在“同一时间”处理来自很多客户端的请求,这就必须使用多进程。

创建子进程才能多道程序并发执行,linux初始化的时候会创建swap进程、然后是init进程和一个init进程的兄弟进程,所有的进程(运行的程序)都是从父进程演化出去的,你可以看看proc里的东西,写个程序打印出各个进程的父进程~网上有源代码的,要的话我给你
咱要先搞明白进程究竟是什么,进程是资源分配的单位,是运行的程序。既然是运行的程序,一个进程自然只能代表一个程序,多道程序设计自然而然就有了多进程的概念。举个例子,多进程(线程)下载,我们可以给一个需要下载的资源分片,多个进程从不同的片分时下载,这样就提高了下载速度,因为对一个程序分配的更多的资源,你试试开迅雷的时候打开个网页,保证你觉得奇卡无比,因为网络带宽(资源)被迅雷的多个进程占用了。其实在本地的多进程程序并不多见,比如word算是个典型的多进程程序,有个进程接受你的键盘输入,有拼写检查进程,有显示进程等等。大多数都用到网络上了,比如服务器。一台服务器要在“同一时间”处理来自很多客户端的请求,这就必须使用多进程。

Linux 是一个多用户操作系统,在同一时间会有许多的用户在争夺系统的资源.有时
进程为了早一点完成任务就创建子进程来争夺资源. 一旦子进程被创建,父子进程一起从
fork 处继续执行,相互竞争系统的资源.

你这个问题很好!动脑筋了!表扬一下。
我的观点是fork给用户提供了多任务并发的编程接口,给你举个例子吧。

网络编程中server - client 模型, server在listen,并用accept函数在一个port上接受client的连接请求,当一个client链接后,server马上fork一个新的进程和新的socket专门与这个client通信,而父进程继续listen。

这样子进程与client的通信和父进程的监听(accept阻塞)宏观上就是并行的,子进程与父进程一同接受操作系统的调度,要不然与client通信send recieve 时就不能listen了!

你应该这么问这个问题: 分时操作系统为什么要引入“进程”的概念? 为什么要引入“子进程”的概念?

  • Linux fork鍑芥暟浣跨敤鏁欑▼
    绛旓細LINUX fork锛堬級鍑芥暟鐢ㄦ硶绠浠 鍦Linux 涓,鍒涘缓涓涓柊杩涚▼鐨勫敮涓鏂规硶鏄湁鏌愪釜宸插瓨鍦ㄧ殑杩涚▼璋冪敤fork()鍑芥暟,琚垱寤虹殑鏂拌繘绋嬬О涓瀛愯繘绋,宸插瓨鍦ㄧ殑杩涚▼绉颁负鐖惰繘绋.fork()鍑芥暟鐨勫疄璐ㄦ槸涓涓郴缁熻皟鐢(鍜寃rite鍑芥暟绫讳技),鍏朵綔鐢ㄦ槸鍒涘缓涓涓柊鐨勮繘绋,褰撲竴涓繘绋嬭皟鐢ㄥ畠,瀹屾垚鍚庡氨鍑虹幇涓や釜鍑犱箮涓妯′竴鏍风殑杩涚▼,鍏朵腑鐢...
  • linux杩涚▼鐨勭壒鎬
    绛旓細鍙互鍦ㄨ繍琛屾椂鍒涘缓鎴栭攢姣併傚畠浠殑鐢熷懡鍛ㄦ湡鍖呮嫭鍒涘缓銆佽繍琛屻佺瓑寰呭拰缁堟绛夌姸鎬併備緥濡傦紝鎵ц鍛戒护鏃讹紝鎿嶄綔绯荤粺灏嗗垱寤烘柊杩涚▼鏉ユ墽琛岃鍛戒护锛屽畬鎴愬悗锛岃杩涚▼灏嗚缁堟銆傝繖浜涚壒鎬т娇寰Linux杩涚▼鑳藉湪绋冲畾銆侀珮鏁堜笖鐏垫椿鐨勭幆澧冧腑杩愯锛屽苟鑳介傚簲鍚勭搴旂敤鍜岄渶姹傘傜悊瑙e拰绠$悊Linux绯荤粺鐨鍩虹鍦ㄤ簬鎺屾彙杩欎簺杩涚▼鐗规с
  • linux涓fork,source鍜宔xec鐨勫尯鍒
    绛旓細bash shell鐨勫懡浠ゅ垎涓轰袱绫伙細澶栭儴鍛戒护鍜屽唴閮ㄥ懡浠ゃ傚閮ㄥ懡浠ゆ槸閫氳繃绯荤粺璋冪敤鎴栫嫭绔嬬殑绋嬪簭瀹炵幇鐨勶紝濡俿ed銆乤wk绛夌瓑銆傚唴閮ㄥ懡浠ゆ槸鐢辩壒娈婄殑鏂囦欢鏍煎紡锛.def锛夋墍瀹炵幇锛屽cd銆乭istory銆乪xec绛夌瓑銆傚湪璇存槑exec鍜宻ource鐨勫尯鍒箣鍓嶏紝鍏堣鏄庝竴涓媐ork鐨勬蹇点俧ork鏄linux鐨绯荤粺璋冪敤锛岀敤鏉鍒涘缓瀛愯繘绋锛坈hild process锛夈傚瓙杩涚▼...
  • linux鍒涘缓杩涚▼
    绛旓細鍩烘湰浠嬬粛锛歠ork鍑芥暟鏄疷NIX鐨勫垎鍙夊嚱鏁帮紝fork鍑芥暟灏嗚繍琛岀潃鐨勭▼搴忓垎鎴2涓畬鍏ㄤ竴鏍鐨勮繘绋锛屾瘡涓繘绋嬮兘鍚姩涓涓粠浠g爜鐨勫悓涓浣嶇疆寮濮嬫墽琛岀殑绾跨▼銆傝繖涓や釜杩涚▼涓殑绾跨▼缁х画鎵ц锛屽氨鍍忔槸涓や釜鐢ㄦ埛鍚屾椂鍚姩浜嗚搴旂敤绋嬪簭鐨勪袱涓壇鏈傚叆闂ㄦ祴璇曪細鍒涘缓涓涓繘绋嬶細include pid_t fork(void)
  • c璇█鐨勯棶棰
    绛旓細鐖惰繘绋涓轰粈涔堣鍒涘缓瀛愯繘绋鍛?鍓嶉潰鎴戜滑宸茬粡 璇磋繃浜Linux鏄竴涓鐢ㄦ埛鎿嶄綔绯荤粺,鍦ㄥ悓涓鏃堕棿浼氭湁璁稿鐨勭敤鎴峰湪浜夊ず绯荤粺鐨勮祫婧.鏈夋椂 杩涚▼涓轰簡鏃╀竴鐐瑰畬鎴愪换鍔″氨鍒涘缓瀛愯繘绋嬫潵浜夊ず璧勬簮. 涓鏃﹀瓙杩涚▼琚垱寤,鐖跺瓙杩涚▼涓璧蜂粠 fork澶勭户缁墽琛,鐩镐簰绔炰簤绯荤粺鐨勮祫婧.鏈夋椂鍊欐垜浠笇鏈涘瓙杩涚▼缁х画鎵ц,鑰岀埗杩涚▼闃诲鐩 鍒板瓙杩涚▼瀹屾垚浠诲姟....
  • linux涓fork,source鍜宔xec鐨勫尯鍒
    绛旓細fork鏄郴缁熻皟鐢紝鐢ㄦ潵鍒涘缓瀛愯繘绋銆俿ource 璇诲彇鍑芥暟锛岃鍙栭厤缃枃浠剁殑鏃跺欑敤锛屼笉鍒涘缓瀛愯繘绋嬶紝涔熸槸'.'exec鏄鍒涘缓杩涚▼锛屼絾鏄槸鍒涘缓鐨杩涚▼鍙栦唬鍘熸潵鐨勮繘绋嬶紝鎵浠ork鏄户鎵跨殗浣嶏紝exec鏄帹缈荤殗鏈濓紱姣斿瀹夊崜绯荤粺涓:灏辨槸鐢╡xec杩涜rootfs鍒囨崲鐨勶紱鍥犱负浠栫敤鐨勬槸busybox锛屾墍浠ョ湡鍋噐ootfs涔嬮棿鐨勫垏鎹㈢敤exec鐨勶紱
  • Linux鍏充簬鍒涘缓瀛愯繘绋骞剁敤execlp()绯荤粺璋冪敤鎵ц绋嬪簭鐨瀹為獙銆傚弽澶嶆墽琛岃绋...
    绛旓細1銆佸嚭鐜颁笉鍚岄『搴忕殑鎵撳嵃淇℃伅鏄鐨勶紱2銆佸洜涓linux绯荤粺鐨杩涚▼绠$悊绋嬪簭瀵瑰悇涓繘绋嬫槸鍒嗘椂闂寸墖璋冨害鐨勶紝椤哄簭鏄殢鏈虹殑銆3銆佹兂瑕佷弗鏍兼帶鍒舵瘡涓瀛愯繘绋鐨勯『搴忥紝鍙互閫氳繃鍦ㄤ笉鍚岀殑瀛愯繘绋嬪鍔犲欢鏃跺嚱鏁版垨閫氳繃杩涚▼鍚屾鐨勪簰鏂ラ噺/淇″彿閲忔潵瀹炵幇銆
  • Linux鍐呮牳涓鐨凩inux杩涚▼鏄浣鍒涘缓鐨?
    绛旓細clone鍜宖ork鐨璋冪敤鏂瑰紡涔熷緢涓嶇浉鍚岋紝clone璋冪敤闇瑕浼犲叆涓涓嚱鏁帮紝璇ュ嚱鏁板湪瀛愯繘绋涓墽琛屻傛澶栵紝clone鍜宖ork鏈澶т笉鍚屽湪浜巆lone涓嶅啀澶嶅埗鐖惰繘绋嬬殑鏍堢┖闂达紝鑰屾槸鑷繁鍒涘缓涓涓柊鐨勩傚叧浜Linux鍛戒护鐨勪粙缁嶏紝鐪嬬湅銆linux灏辫杩欎箞瀛︺嬶紝鍏蜂綋鍏充簬杩欎竴绔犲湴鍧3w(dot)linuxprobe/chapter-02(dot)html ...
  • 鍦linux绯荤粺涓姣忎釜杩涚▼閮芥湁
    绛旓細鑷繁鐨勭敓鍛藉懆鏈熴傛牴鎹煡璇㈠崥瀹㈠洯缃戞樉绀猴紝鍦Linux绯荤粺涓锛屾瘡涓涓墽琛岀殑杩涚▼閮界О涓轰竴涓繘绋嬶紝姣忎釜杩涚▼閮芥湁鑷繁鐨勭敓鍛藉懆鏈燂紝褰撴搷浣滅郴缁熻瀹屾垚鏌愪釜浠诲姟鏃讹紝绯荤粺浼鍒涘缓涓涓繘绋嬶紝褰撹繘绋嬪畬鎴愪换鍔℃椂锛岀郴缁熷氨浼氭挙閿杩欎釜杩涚▼锛屾敹鍥炲畠鎵鍗犵敤鐨勮祫婧愩
  • linux绯荤粺鏄庢牱鍒涘缓杩涚▼鐨?浠ュ強棣栨璋冪敤鏂板垱寤鸿繘绋嬫槸,鍏跺叆鍙e湪鍝...
    绛旓細linux 绯荤粺鍒涘缓杩涚▼閮芥槸鐢 fork() 绯荤粺璋冪敤鍒涘缓瀛愯繘绋 鐢 fork() 绯荤粺璋冪敤鍒涘缓鐨勬柊杩涚▼琚О涓哄瓙杩涚▼銆傝鍑芥暟琚皟鐢ㄤ竴娆★紝浣嗚繑鍥炰袱娆°傚鏋 fork(锛夎繘绋嬭皟鐢ㄦ垚鍔燂紝涓ゆ杩斿洖鐨勫尯鍒槸瀛愯繘绋嬬殑杩斿洖鍊兼槸0锛岃岀埗杩涚▼鐨勮繑鍥炲煎垯鏄柊瀛杩涚▼鐨杩涚▼鍙
  • 扩展阅读:linux为什么很少人用 ... linux怎么创建文件 ... linux中文叫什么 ... 学了linux可以干什么 ... 鸿蒙底层是linux吗 ... linux 删除路径 ... 学linux适合什么人 ... linux如何创建多级子目录 ... linux创建子目录creat ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网