在Linux系统中多进程程序结构和多线程结构那个好? linux多进程编程 看什么书

linux\u4e2d\u591a\u8fdb\u7a0b\u7a0b\u5e8f\u548c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u7684\u533a\u522b

IBM\u6709\u4e2a\u5bb6\u4f19\u505a\u4e86\u4e2a\u6d4b\u8bd5\uff0c\u53d1\u73b0\u5207\u6362\u7ebf\u7a0bcontext\u7684\u65f6\u5019\uff0cwindows\u6bd4linux\u5feb\u4e00\u500d\u591a\u3002\u8fdb\u51fa\u6700\u5feb\u7684\u9501\uff08windows2k\u7684 critical section\u548clinux\u7684pthread_mutex\uff09\uff0cwindows\u6bd4linux\u7684\u8981\u5feb\u4e94\u500d\u5de6\u53f3\u3002\u5f53\u7136\u8fd9\u5e76\u4e0d\u662f\u8bf4linux\u4e0d\u597d\uff0c\u800c\u4e14\u5728\u7ecf\u8fc7\u5b9e\u9645\u7f16\u7a0b\u4e4b\u540e\uff0c\u7efc\u5408\u6765\u770b\u6211\u89c9\u5f97linux\u66f4\u9002\u5408\u505ahigh performance server\uff0c\u4e0d\u8fc7\u5728\u591a\u7ebf\u7a0b\u8fd9\u4e2a\u5177\u4f53\u7684\u9886\u57df\u5185\uff0clinux\u8fd8\u662f\u7a0d\u900awindows\u4e00\u70b9\u3002\u8fd9\u5e94\u8be5\u662f\u60c5\u6709\u53ef\u539f\u7684\uff0c\u6bd5\u7adfunix\u5bb6\u65cf\u90fd\u662f\u4ece\u591a\u8fdb\u7a0b\u8fc7\u6765\u7684\uff0c\u800c windows\u4ece\u5934\u5c31\u662f\u591a\u7ebf\u7a0b\u7684\u3002
\u3000\u3000\u5982\u679c\u662fUNIX/linux\u73af\u5883\uff0c\u91c7\u7528\u591a\u7ebf\u7a0b\u6ca1\u5fc5\u8981\u3002
\u3000\u3000\u591a\u7ebf\u7a0b\u6bd4\u591a\u8fdb\u7a0b\u6027\u80fd\u9ad8\uff1f\u8bef\u5bfc\uff01
\u3000\u3000\u5e94\u8be5\u8bf4\uff0c\u591a\u7ebf\u7a0b\u6bd4\u591a\u8fdb\u7a0b\u6210\u672c\u4f4e\uff0c\u4f46\u6027\u80fd\u66f4\u4f4e\u3002
\u3000\u3000\u5728UNIX\u73af\u5883\uff0c\u591a\u8fdb\u7a0b\u8c03\u5ea6\u5f00\u9500\u6bd4\u591a\u7ebf\u7a0b\u8c03\u5ea6\u5f00\u9500\uff0c\u6ca1\u6709\u663e\u8457\u533a\u522b\uff0c\u5c31\u662f\u8bf4\uff0cUNIX\u8fdb\u7a0b\u8c03\u5ea6\u6548\u7387\u662f\u5f88\u9ad8\u7684\u3002\u5185\u5b58\u6d88\u8017\u65b9\u9762\uff0c\u4e8c\u8005\u53ea\u5dee\u5168\u5c40\u6570\u636e\u533a\uff0c\u73b0\u5728\u5185\u5b58\u90fd\u5f88\u4fbf\u5b9c\uff0c\u670d\u52a1\u5668\u5185\u5b58\u52a8\u8f84\u82e5\u5e72G\uff0c\u6839\u672c\u4e0d\u662f\u95ee\u9898\u3002
\u3000\u3000\u591a\u8fdb\u7a0b\u662f\u7acb\u4f53\u4ea4\u901a\u7cfb\u7edf\uff0c\u867d\u7136\u9020\u4ef7\u9ad8\uff0c\u4e0a\u5761\u4e0b\u5761\u591a\u8017\u70b9\u6cb9\uff0c\u4f46\u662f\u4e0d\u5835\u8f66\u3002
\u3000\u3000\u591a\u7ebf\u7a0b\u662f\u5e73\u9762\u4ea4\u901a\u7cfb\u7edf\uff0c\u9020\u4ef7\u4f4e\uff0c\u4f46\u7ea2\u7eff\u706f\u592a\u591a\uff0c\u8001\u5835\u8f66\u3002
\u3000\u3000\u6211\u4eec\u73b0\u5728\u90fd\u5f00\u8dd1\u8f66\uff0c\u6cb9\uff08\u4e3b\u9891\uff09\u6709\u7684\u662f\uff0c\u4e0d\u6015\u4e0a\u5761\u4e0b\u5761\uff0c\u5c31\u6015\u5835\u8f66\u3002
\u3000\u3000\u9ad8\u6027\u80fd\u4ea4\u6613\u670d\u52a1\u5668\u4e2d\u95f4\u4ef6\uff0c\u5982TUXEDO\uff0c\u90fd\u662f\u4e3b\u5f20\u591a\u8fdb\u7a0b\u7684\u3002\u5b9e\u9645\u6d4b\u8bd5\u8868\u660e\uff0cTUXEDO\u6027\u80fd\u548c\u5e76\u53d1\u6548\u7387\u662f\u975e\u5e38\u9ad8\u7684\u3002TUXEDO\u662f\u8d1d\u5c14\u5b9e\u9a8c\u5ba4\u7684\uff0c\u4e0eUNIX\u540c\u5b97\uff0c\u5e94\u8be5\u662f\u5bf9UNIX\u7406\u89e3\u6700\u4e3a\u6df1\u523b\u7684\uff0c\u4ed6\u4eec\u7684\u610f\u89c1\u5e94\u8be5\u5177\u6709\u5f88\u5927\u7684\u53c2\u8003\u610f\u4e49\u3002

\u3000\u3000\u591a\u7ebf\u7a0b\u7684\u4f18\u70b9\uff1a
\u3000\u3000\u65e0\u9700\u8de8\u8fdb\u7a0b\u8fb9\u754c\uff1b
\u7a0b\u5e8f\u903b\u8f91\u548c\u63a7\u5236\u65b9\u5f0f\u7b80\u5355\uff1b
\u6240\u6709\u7ebf\u7a0b\u53ef\u4ee5\u76f4\u63a5\u5171\u4eab\u5185\u5b58\u548c\u53d8\u91cf\u7b49\uff1b
\u7ebf\u7a0b\u65b9\u5f0f\u6d88\u8017\u7684\u603b\u8d44\u6e90\u6bd4\u8fdb\u7a0b\u65b9\u5f0f\u597d\uff1b
\u591a\u7ebf\u7a0b\u7f3a\u70b9\uff1a
\u3000\u3000\u6bcf\u4e2a\u7ebf\u7a0b\u4e0e\u4e3b\u7a0b\u5e8f\u5171\u7528\u5730\u5740\u7a7a\u95f4\uff0c\u53d7\u9650\u4e8e2GB\u5730\u5740\u7a7a\u95f4\uff1b
\u7ebf\u7a0b\u4e4b\u95f4\u7684\u540c\u6b65\u548c\u52a0\u9501\u63a7\u5236\u6bd4\u8f83\u9ebb\u70e6\uff1b
\u4e00\u4e2a\u7ebf\u7a0b\u7684\u5d29\u6e83\u53ef\u80fd\u5f71\u54cd\u5230\u6574\u4e2a\u7a0b\u5e8f\u7684\u7a33\u5b9a\u6027\uff1b
\u5230\u8fbe\u4e00\u5b9a\u7684\u7ebf\u7a0b\u6570\u7a0b\u5ea6\u540e\uff0c\u5373\u4f7f\u518d\u589e\u52a0CPU\u4e5f\u65e0\u6cd5\u63d0\u9ad8\u6027\u80fd\uff0c\u4f8b\u5982Windows Server 2003\uff0c\u5927\u7ea6\u662f1500\u4e2a\u5de6\u53f3\u7684\u7ebf\u7a0b\u6570\u5c31\u5feb\u5230\u6781\u9650\u4e86\uff08\u7ebf\u7a0b\u5806\u6808\u8bbe\u5b9a\u4e3a1M\uff09\uff0c\u5982\u679c\u8bbe\u5b9a\u7ebf\u7a0b\u5806\u6808\u4e3a2M\uff0c\u8fd8\u8fbe\u4e0d\u52301500\u4e2a\u7ebf\u7a0b\u603b\u6570\uff1b
\u7ebf\u7a0b\u80fd\u591f\u63d0\u9ad8\u7684\u603b\u6027\u80fd\u6709\u9650\uff0c\u800c\u4e14\u7ebf\u7a0b\u591a\u4e86\u4e4b\u540e\uff0c\u7ebf\u7a0b\u672c\u8eab\u7684\u8c03\u5ea6\u4e5f\u662f\u4e00\u4e2a\u9ebb\u70e6\u4e8b\u513f\uff0c\u9700\u8981\u6d88\u8017\u8f83\u591a\u7684CPU
\u3000\u3000
\u3000\u3000\u591a\u8fdb\u7a0b\u4f18\u70b9\uff1a
\u3000\u3000\u6bcf\u4e2a\u8fdb\u7a0b\u4e92\u76f8\u72ec\u7acb\uff0c\u4e0d\u5f71\u54cd\u4e3b\u7a0b\u5e8f\u7684\u7a33\u5b9a\u6027\uff0c\u5b50\u8fdb\u7a0b\u5d29\u6e83\u6ca1\u5173\u7cfb\uff1b
\u901a\u8fc7\u589e\u52a0CPU\uff0c\u5c31\u53ef\u4ee5\u5bb9\u6613\u6269\u5145\u6027\u80fd\uff1b
\u53ef\u4ee5\u5c3d\u91cf\u51cf\u5c11\u7ebf\u7a0b\u52a0\u9501/\u89e3\u9501\u7684\u5f71\u54cd\uff0c\u6781\u5927\u63d0\u9ad8\u6027\u80fd\uff0c\u5c31\u7b97\u662f\u7ebf\u7a0b\u8fd0\u884c\u7684\u6a21\u5757\u7b97\u6cd5\u6548\u7387\u4f4e\u4e5f\u6ca1\u5173\u7cfb\uff1b
\u6bcf\u4e2a\u5b50\u8fdb\u7a0b\u90fd\u67092GB\u5730\u5740\u7a7a\u95f4\u548c\u76f8\u5173\u8d44\u6e90\uff0c\u603b\u4f53\u80fd\u591f\u8fbe\u5230\u7684\u6027\u80fd\u4e0a\u9650\u975e\u5e38\u5927
\u591a\u7ebf\u7a0b\u7f3a\u70b9\uff1a
\u3000\u3000\u903b\u8f91\u63a7\u5236\u590d\u6742\uff0c\u9700\u8981\u548c\u4e3b\u7a0b\u5e8f\u4ea4\u4e92\uff1b
\u9700\u8981\u8de8\u8fdb\u7a0b\u8fb9\u754c\uff0c\u5982\u679c\u6709\u5927\u6570\u636e\u91cf\u4f20\u9001\uff0c\u5c31\u4e0d\u592a\u597d\uff0c\u9002\u5408\u5c0f\u6570\u636e\u91cf\u4f20\u9001\u3001\u5bc6\u96c6\u8fd0\u7b97
\u591a\u8fdb\u7a0b\u8c03\u5ea6\u5f00\u9500\u6bd4\u8f83\u5927\uff1b
\u6700\u597d\u662f\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u7ed3\u5408\uff0c\u5373\u6839\u636e\u5b9e\u9645\u7684\u9700\u8981\uff0c\u6bcf\u4e2aCPU\u5f00\u542f\u4e00\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u8fd9\u4e2a\u5b50\u8fdb\u7a0b\u5f00\u542f\u591a\u7ebf\u7a0b\u53ef\u4ee5\u4e3a\u82e5\u5e72\u540c\u7c7b\u578b\u7684\u6570\u636e\u8fdb\u884c\u5904\u7406\u3002\u5f53\u7136\u4f60\u4e5f\u53ef\u4ee5\u5229\u7528\u591a\u7ebf\u7a0b+\u591aCPU+\u8f6e\u8be2\u65b9\u5f0f\u6765\u89e3\u51b3\u95ee\u9898\u2026\u2026
\u3000\u3000\u65b9\u6cd5\u548c\u624b\u6bb5\u662f\u591a\u6837\u7684\uff0c\u5173\u952e\u662f\u81ea\u5df1\u770b\u8d77\u6765\u5b9e\u73b0\u65b9\u4fbf\u6709\u80fd\u591f\u6ee1\u8db3\u8981\u6c42\uff0c\u4ee3\u4ef7\u4e5f\u5408\u9002\u3002

\u3000\u3000\u6700\u8fd1\u5728\u5b66\u4e60linux\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff0c\u591a\u8fdb\u7a0b\u7f16\u7a0b\u7b97\u662f\u7f16\u7a0b\u4e2d\u7684\u6700\u91cd\u8981\u7684\u4e00\u4e2a\u90e8\u5206\u4e86\uff0c\u672c\u6587\u8ba9\u6211\u5b66\u4e60\u548c\u660e\u767d\u4e86\u5f88\u591a\uff0c\u6240\u4ee5\u8f6c\u8f7d\u8fc7\u6765\u3002\u8ba9\u66f4\u591a\u60f3\u591a\u7ebf\u7a0b\u7f16\u7a0b\u7684\u4eba\u5b66\u4e60\u3002\u53ea\u6709\u9876\u5230\u9996\u9875\u624d\u80fd\u8ba9\u66f4\u591a\u7684\u4eba\u5b66\u4e60\u3002
\u3000\u3000\u6587\u7ae0\u6458\u8981:
\u3000\u3000\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u8bbe\u8ba1\u7684\u6982\u5ff5\u65e9\u5728\u516d\u5341\u5e74\u4ee3\u5c31\u88ab\u63d0\u51fa\uff0c\u4f46\u76f4\u5230\u516b\u5341\u5e74\u4ee3\u4e2d\u671f\uff0cUnix\u7cfb\u7edf\u4e2d\u624d\u5f15\u5165\u591a\u7ebf\u7a0b\u673a\u5236\uff0c\u5982\u4eca\uff0c\u7531\u4e8e\u81ea\u8eab\u7684\u8bb8\u591a\u4f18\u70b9\uff0c\u591a\u7ebf\u7a0b\u7f16\u7a0b\u5df2\u7ecf\u5f97\u5230\u4e86\u5e7f\u6cdb\u7684\u5e94\u7528\u3002\u672c\u6587\u6211\u4eec\u5c06\u4ecb\u7ecd\u5728Linux\u4e0b\u7f16\u5199\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u7684\u4e00\u4e9b\u521d\u6b65\u77e5\u8bc6\u3002

\u3000\u3000--------------------------------------------------------------------------------

\u3000\u3000\u6b63\u6587:
\u3000\u3000Linux\u4e0b\u7684\u591a\u8fdb\u7a0b\u7f16\u7a0b\u521d\u6b65

\u3000\u30001 \u5f15\u8a00
\u3000\u3000\u5bf9\u4e8e\u6ca1\u6709\u63a5\u89e6\u8fc7Unix/Linux\u64cd\u4f5c\u7cfb\u7edf\u7684\u4eba\u6765\u8bf4\uff0cfork\u662f\u6700\u96be\u7406\u89e3\u7684\u6982\u5ff5\u4e4b\u4e00\uff1a\u5b83\u6267\u884c\u4e00\u6b21\u5374\u8fd4\u56de\u4e24\u4e2a\u503c\u3002fork\u51fd\u6570\u662fUnix\u7cfb\u7edf\u6700\u6770\u51fa\u7684\u6210\u5c31\u4e4b\u4e00\uff0c\u5b83\u662f\u4e03\u5341\u5e74\u4ee3UNIX\u65e9\u671f\u7684\u5f00\u53d1\u8005\u7ecf\u8fc7\u957f\u671f\u5728\u7406\u8bba\u548c\u5b9e\u8df5\u4e0a\u7684\u8270\u82e6\u63a2\u7d22\u540e\u53d6\u5f97\u7684\u6210\u679c\uff0c\u4e00\u65b9\u9762\uff0c\u5b83\u4f7f\u64cd\u4f5c\u7cfb\u7edf\u5728\u8fdb\u7a0b\u7ba1\u7406\u4e0a\u4ed8\u51fa\u4e86\u6700\u5c0f\u7684\u4ee3\u4ef7\uff0c\u53e6\u4e00\u65b9\u9762\uff0c\u53c8\u4e3a\u7a0b\u5e8f\u5458\u63d0\u4f9b\u4e86\u4e00\u4e2a\u7b80\u6d01\u660e\u4e86\u7684\u591a\u8fdb\u7a0b\u65b9\u6cd5\u3002\u4e0eDOS\u548c\u65e9\u671f\u7684Windows\u4e0d\u540c\uff0cUnix/Linux\u7cfb\u7edf\u662f\u771f\u6b63\u5b9e\u73b0\u591a\u4efb\u52a1\u64cd\u4f5c\u7684\u7cfb\u7edf\uff0c\u53ef\u4ee5\u8bf4\uff0c\u4e0d\u4f7f\u7528\u591a\u8fdb\u7a0b\u7f16\u7a0b\uff0c\u5c31\u4e0d\u80fd\u7b97\u662f\u771f\u6b63\u7684Linux\u73af\u5883\u4e0b\u7f16\u7a0b\u3002
\u3000\u3000\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u8bbe\u8ba1\u7684\u6982\u5ff5\u65e9\u5728\u516d\u5341\u5e74\u4ee3\u5c31\u88ab\u63d0\u51fa\uff0c\u4f46\u76f4\u5230\u516b\u5341\u5e74\u4ee3\u4e2d\u671f\uff0cUnix\u7cfb\u7edf\u4e2d\u624d\u5f15\u5165\u591a\u7ebf\u7a0b\u673a\u5236\uff0c\u5982\u4eca\uff0c\u7531\u4e8e\u81ea\u8eab\u7684\u8bb8\u591a\u4f18\u70b9\uff0c\u591a\u7ebf\u7a0b\u7f16\u7a0b\u5df2\u7ecf\u5f97\u5230\u4e86\u5e7f\u6cdb\u7684\u5e94\u7528\u3002
\u3000\u3000\u4e0b\u9762\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u5728Linux\u4e0b\u7f16\u5199\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u7a0b\u5e8f\u7684\u4e00\u4e9b\u521d\u6b65\u77e5\u8bc6\u3002

\u3000\u30002 \u591a\u8fdb\u7a0b\u7f16\u7a0b
\u3000\u3000\u4ec0\u4e48\u662f\u4e00\u4e2a\u8fdb\u7a0b\uff1f\u8fdb\u7a0b\u8fd9\u4e2a\u6982\u5ff5\u662f\u9488\u5bf9\u7cfb\u7edf\u800c\u4e0d\u662f\u9488\u5bf9\u7528\u6237\u7684\uff0c\u5bf9\u7528\u6237\u6765\u8bf4\uff0c\u4ed6\u9762\u5bf9\u7684\u6982\u5ff5\u662f\u7a0b\u5e8f\u3002\u5f53\u7528\u6237\u6572\u5165\u547d\u4ee4\u6267\u884c\u4e00\u4e2a\u7a0b\u5e8f\u7684\u65f6\u5019\uff0c\u5bf9\u7cfb\u7edf\u800c\u8a00\uff0c\u5b83\u5c06\u542f\u52a8\u4e00\u4e2a\u8fdb\u7a0b\u3002\u4f46\u548c\u7a0b\u5e8f\u4e0d\u540c\u7684\u662f\uff0c\u5728\u8fd9\u4e2a\u8fdb\u7a0b\u4e2d\uff0c\u7cfb\u7edf\u53ef\u80fd\u9700\u8981\u518d\u542f\u52a8\u4e00\u4e2a\u6216\u591a\u4e2a\u8fdb\u7a0b\u6765\u5b8c\u6210\u72ec\u7acb\u7684\u591a\u4e2a\u4efb\u52a1\u3002\u591a\u8fdb\u7a0b\u7f16\u7a0b\u7684\u4e3b\u8981\u5185\u5bb9\u5305\u62ec\u8fdb\u7a0b\u63a7\u5236\u548c\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff0c\u5728\u4e86\u89e3\u8fd9\u4e9b\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u8981\u7b80\u5355\u77e5\u9053\u8fdb\u7a0b\u7684\u7ed3\u6784\u3002

\u3000\u30002.1 Linux\u4e0b\u8fdb\u7a0b\u7684\u7ed3\u6784
\u3000\u3000Linux\u4e0b\u4e00\u4e2a\u8fdb\u7a0b\u5728\u5185\u5b58\u91cc\u6709\u4e09\u90e8\u5206\u7684\u6570\u636e\uff0c\u5c31\u662f"\u4ee3\u7801\u6bb5"\u3001"\u5806\u6808\u6bb5"\u548c"\u6570\u636e\u6bb5"\u3002\u5176\u5b9e\u5b66\u8fc7\u6c47\u7f16\u8bed\u8a00\u7684\u4eba\u4e00\u5b9a\u77e5\u9053\uff0c\u4e00\u822c\u7684CPU\u90fd\u6709\u4e0a\u8ff0\u4e09\u79cd\u6bb5\u5bc4\u5b58\u5668\uff0c\u4ee5\u65b9\u4fbf\u64cd\u4f5c\u7cfb\u7edf\u7684\u8fd0\u884c\u3002\u8fd9\u4e09\u4e2a\u90e8\u5206\u4e5f\u662f\u6784\u6210\u4e00\u4e2a\u5b8c\u6574\u7684\u6267\u884c\u5e8f\u5217\u7684\u5fc5\u8981\u7684\u90e8\u5206\u3002
\u3000\u3000"\u4ee3\u7801\u6bb5"\uff0c\u987e\u540d\u601d\u4e49\uff0c\u5c31\u662f\u5b58\u653e\u4e86\u7a0b\u5e8f\u4ee3\u7801\u7684\u6570\u636e\uff0c\u5047\u5982\u673a\u5668\u4e2d\u6709\u6570\u4e2a\u8fdb\u7a0b\u8fd0\u884c\u76f8\u540c\u7684\u4e00\u4e2a\u7a0b\u5e8f\uff0c\u90a3\u4e48\u5b83\u4eec\u5c31\u53ef\u4ee5\u4f7f\u7528\u76f8\u540c\u7684\u4ee3\u7801\u6bb5\u3002"\u5806\u6808\u6bb5"\u5b58\u653e\u7684\u5c31\u662f\u5b50\u7a0b\u5e8f\u7684\u8fd4\u56de\u5730\u5740\u3001\u5b50\u7a0b\u5e8f\u7684\u53c2\u6570\u4ee5\u53ca\u7a0b\u5e8f\u7684\u5c40\u90e8\u53d8\u91cf\u3002\u800c\u6570\u636e\u6bb5\u5219\u5b58\u653e\u7a0b\u5e8f\u7684\u5168\u5c40\u53d8\u91cf\uff0c\u5e38\u6570\u4ee5\u53ca\u52a8\u6001\u6570\u636e\u5206\u914d\u7684\u6570\u636e\u7a7a\u95f4\uff08\u6bd4\u5982\u7528malloc\u4e4b\u7c7b\u7684\u51fd\u6570\u53d6\u5f97\u7684\u7a7a\u95f4\uff09\u3002\u8fd9\u5176\u4e2d\u6709\u8bb8\u591a\u7ec6\u8282\u95ee\u9898\uff0c\u8fd9\u91cc\u9650\u4e8e\u7bc7\u5e45\u5c31\u4e0d\u591a\u4ecb\u7ecd\u4e86\u3002\u7cfb\u7edf\u5982\u679c\u540c\u65f6\u8fd0\u884c\u6570\u4e2a\u76f8\u540c\u7684\u7a0b\u5e8f\uff0c\u5b83\u4eec\u4e4b\u95f4\u5c31\u4e0d\u80fd\u4f7f\u7528\u540c\u4e00\u4e2a\u5806\u6808\u6bb5\u548c\u6570\u636e\u6bb5\u3002

\u3000\u30002.2 Linux\u4e0b\u7684\u8fdb\u7a0b\u63a7\u5236
\u3000\u3000\u5728\u4f20\u7edf\u7684Unix\u73af\u5883\u4e0b\uff0c\u6709\u4e24\u4e2a\u57fa\u672c\u7684\u64cd\u4f5c\u7528\u4e8e\u521b\u5efa\u548c\u4fee\u6539\u8fdb\u7a0b\uff1a\u51fd\u6570fork( )\u7528\u6765\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u8fdb\u7a0b\uff0c\u8be5\u8fdb\u7a0b\u51e0\u4e4e\u662f\u5f53\u524d\u8fdb\u7a0b\u7684\u4e00\u4e2a\u5b8c\u5168\u62f7\u8d1d\uff1b\u51fd\u6570\u65cfexec( )\u7528\u6765\u542f\u52a8\u53e6\u5916\u7684\u8fdb\u7a0b\u4ee5\u53d6\u4ee3\u5f53\u524d\u8fd0\u884c\u7684\u8fdb\u7a0b\u3002Linux\u7684\u8fdb\u7a0b\u63a7\u5236\u548c\u4f20\u7edf\u7684Unix\u8fdb\u7a0b\u63a7\u5236\u57fa\u672c\u4e00\u81f4\uff0c\u53ea\u5728\u4e00\u4e9b\u7ec6\u8282\u7684\u5730\u65b9\u6709\u4e9b\u533a\u522b\uff0c\u4f8b\u5982\u5728Linux\u7cfb\u7edf\u4e2d\u8c03\u7528vfork\u548cfork\u5b8c\u5168\u76f8\u540c\uff0c\u800c\u5728\u6709\u4e9b\u7248\u672c\u7684Unix\u7cfb\u7edf\u4e2d\uff0cvfork\u8c03\u7528\u6709\u4e0d\u540c\u7684\u529f\u80fd\u3002\u7531\u4e8e\u8fd9\u4e9b\u5dee\u522b\u51e0\u4e4e\u4e0d\u5f71\u54cd\u6211\u4eec\u5927\u591a\u6570\u7684\u7f16\u7a0b\uff0c\u5728\u8fd9\u91cc\u6211\u4eec\u4e0d\u4e88\u8003\u8651\u3002
\u3000\u30002.2.1 fork( )
\u3000\u3000fork\u5728\u82f1\u6587\u4e2d\u662f"\u5206\u53c9"\u7684\u610f\u601d\u3002\u4e3a\u4ec0\u4e48\u53d6\u8fd9\u4e2a\u540d\u5b57\u5462\uff1f\u56e0\u4e3a\u4e00\u4e2a\u8fdb\u7a0b\u5728\u8fd0\u884c\u4e2d\uff0c\u5982\u679c\u4f7f\u7528\u4e86fork\uff0c\u5c31\u4ea7\u751f\u4e86\u53e6\u4e00\u4e2a\u8fdb\u7a0b\uff0c\u4e8e\u662f\u8fdb\u7a0b\u5c31"\u5206\u53c9"\u4e86\uff0c\u6240\u4ee5\u8fd9\u4e2a\u540d\u5b57\u53d6\u5f97\u5f88\u5f62\u8c61\u3002\u4e0b\u9762\u5c31\u770b\u770b\u5982\u4f55\u5177\u4f53\u4f7f\u7528fork\uff0c\u8fd9\u6bb5\u7a0b\u5e8f\u6f14\u793a\u4e86\u4f7f\u7528fork\u7684\u57fa\u672c\u6846\u67b6\uff1a

\u3000\u3000void main(){
\u3000\u3000int i;
\u3000\u3000if ( fork() == 0 ) {
\u3000\u3000/* \u5b50\u8fdb\u7a0b\u7a0b\u5e8f */
\u3000\u3000for ( i = 1; i <1000; i ++ ) printf("This is child process/n");
\u3000\u3000}
\u3000\u3000else {
\u3000\u3000/* \u7236\u8fdb\u7a0b\u7a0b\u5e8f*/
\u3000\u3000for ( i = 1; i <1000; i ++ ) printf("This is process process/n");
\u3000\u3000}
\u3000\u3000}

\u3000\u3000\u7a0b\u5e8f\u8fd0\u884c\u540e\uff0c\u4f60\u5c31\u80fd\u770b\u5230\u5c4f\u5e55\u4e0a\u4ea4\u66ff\u51fa\u73b0\u5b50\u8fdb\u7a0b\u4e0e\u7236\u8fdb\u7a0b\u5404\u6253\u5370\u51fa\u7684\u4e00\u5343\u6761\u4fe1\u606f\u4e86\u3002\u5982\u679c\u7a0b\u5e8f\u8fd8\u5728\u8fd0\u884c\u4e2d\uff0c\u4f60\u7528ps\u547d\u4ee4\u5c31\u80fd\u770b\u5230\u7cfb\u7edf\u4e2d\u6709\u4e24\u4e2a\u5b83\u5728\u8fd0\u884c\u4e86\u3002
\u3000\u3000\u90a3\u4e48\u8c03\u7528\u8fd9\u4e2afork\u51fd\u6570\u65f6\u53d1\u751f\u4e86\u4ec0\u4e48\u5462\uff1ffork\u51fd\u6570\u542f\u52a8\u4e00\u4e2a\u65b0\u7684\u8fdb\u7a0b\uff0c\u524d\u9762\u6211\u4eec\u8bf4\u8fc7\uff0c\u8fd9\u4e2a\u8fdb\u7a0b\u51e0\u4e4e\u662f\u5f53\u524d\u8fdb\u7a0b\u7684\u4e00\u4e2a\u62f7\u8d1d\uff1a\u5b50\u8fdb\u7a0b\u548c\u7236\u8fdb\u7a0b\u4f7f\u7528\u76f8\u540c\u7684\u4ee3\u7801\u6bb5\uff1b\u5b50\u8fdb\u7a0b\u590d\u5236\u7236\u8fdb\u7a0b\u7684\u5806\u6808\u6bb5\u548c\u6570\u636e\u6bb5\u3002\u8fd9\u6837\uff0c\u7236\u8fdb\u7a0b\u7684\u6240\u6709\u6570\u636e\u90fd\u53ef\u4ee5\u7559\u7ed9\u5b50\u8fdb\u7a0b\uff0c\u4f46\u662f\uff0c\u5b50\u8fdb\u7a0b\u4e00\u65e6\u5f00\u59cb\u8fd0\u884c\uff0c\u867d\u7136\u5b83\u7ee7\u627f\u4e86\u7236\u8fdb\u7a0b\u7684\u4e00\u5207\u6570\u636e\uff0c\u4f46\u5b9e\u9645\u4e0a\u6570\u636e\u5374\u5df2\u7ecf\u5206\u5f00\uff0c\u76f8\u4e92\u4e4b\u95f4\u4e0d\u518d\u6709\u5f71\u54cd\u4e86\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5b83\u4eec\u4e4b\u95f4\u4e0d\u518d\u5171\u4eab\u4efb\u4f55\u6570\u636e\u4e86\u3002\u5b83\u4eec\u518d\u8981\u4ea4\u4e92\u4fe1\u606f\u65f6\uff0c\u53ea\u6709\u901a\u8fc7\u8fdb\u7a0b\u95f4\u901a\u4fe1\u6765\u5b9e\u73b0\uff0c\u8fd9\u5c06\u662f\u6211\u4eec\u4e0b\u9762\u7684\u5185\u5bb9\u3002\u65e2\u7136\u5b83\u4eec\u5982\u6b64\u76f8\u8c61\uff0c\u7cfb\u7edf\u5982\u4f55\u6765\u533a\u5206\u5b83\u4eec\u5462\uff1f\u8fd9\u662f\u7531\u51fd\u6570\u7684\u8fd4\u56de\u503c\u6765\u51b3\u5b9a\u7684\u3002\u5bf9\u4e8e\u7236\u8fdb\u7a0b\uff0cfork\u51fd\u6570\u8fd4\u56de\u4e86\u5b50\u7a0b\u5e8f\u7684\u8fdb\u7a0b\u53f7\uff0c\u800c\u5bf9\u4e8e\u5b50\u7a0b\u5e8f\uff0cfork\u51fd\u6570\u5219\u8fd4\u56de\u96f6\u3002\u5728\u64cd\u4f5c\u7cfb\u7edf\u4e2d\uff0c\u6211\u4eec\u7528ps\u51fd\u6570\u5c31\u53ef\u4ee5\u770b\u5230\u4e0d\u540c\u7684\u8fdb\u7a0b\u53f7\uff0c\u5bf9\u7236\u8fdb\u7a0b\u800c\u8a00\uff0c\u5b83\u7684\u8fdb\u7a0b\u53f7\u662f\u7531\u6bd4\u5b83\u66f4\u4f4e\u5c42\u7684\u7cfb\u7edf\u8c03\u7528\u8d4b\u4e88\u7684\uff0c\u800c\u5bf9\u4e8e\u5b50\u8fdb\u7a0b\u800c\u8a00\uff0c\u5b83\u7684\u8fdb\u7a0b\u53f7\u5373\u662ffork\u51fd\u6570\u5bf9\u7236\u8fdb\u7a0b\u7684\u8fd4\u56de\u503c\u3002\u5728\u7a0b\u5e8f\u8bbe\u8ba1\u4e2d\uff0c\u7236\u8fdb\u7a0b\u548c\u5b50\u8fdb\u7a0b\u90fd\u8981\u8c03\u7528\u51fd\u6570fork\uff08\uff09\u4e0b\u9762\u7684\u4ee3\u7801\uff0c\u800c\u6211\u4eec\u5c31\u662f\u5229\u7528fork\uff08\uff09\u51fd\u6570\u5bf9\u7236\u5b50\u8fdb\u7a0b\u7684\u4e0d\u540c\u8fd4\u56de\u503c\u7528if...else...\u8bed\u53e5\u6765\u5b9e\u73b0\u8ba9\u7236\u5b50\u8fdb\u7a0b\u5b8c\u6210\u4e0d\u540c\u7684\u529f\u80fd\uff0c\u6b63\u5982\u6211\u4eec\u4e0a\u9762\u4e3e\u7684\u4f8b\u5b50\u4e00\u6837\u3002\u6211\u4eec\u770b\u5230\uff0c\u4e0a\u9762\u4f8b\u5b50\u6267\u884c\u65f6\u4e24\u6761\u4fe1\u606f\u662f\u4ea4\u4e92\u65e0\u89c4\u5219\u7684\u6253\u5370\u51fa\u6765\u7684\uff0c\u8fd9\u662f\u7236\u5b50\u8fdb\u7a0b\u72ec\u7acb\u6267\u884c\u7684\u7ed3\u679c\uff0c\u867d\u7136\u6211\u4eec\u7684\u4ee3\u7801\u4f3c\u4e4e\u548c\u4e32\u884c\u7684\u4ee3\u7801\u6ca1\u6709\u4ec0\u4e48\u533a\u522b\u3002
\u3000\u3000\u8bfb\u8005\u4e5f\u8bb8\u4f1a\u95ee\uff0c\u5982\u679c\u4e00\u4e2a\u5927\u7a0b\u5e8f\u5728\u8fd0\u884c\u4e2d\uff0c\u5b83\u7684\u6570\u636e\u6bb5\u548c\u5806\u6808\u90fd\u5f88\u5927\uff0c\u4e00\u6b21fork\u5c31\u8981\u590d\u5236\u4e00\u6b21\uff0c\u90a3\u4e48fork\u7684\u7cfb\u7edf\u5f00\u9500\u4e0d\u662f\u5f88\u5927\u5417\uff1f\u5176\u5b9eUNIX\u81ea\u6709\u5176\u89e3\u51b3\u7684\u529e\u6cd5\uff0c\u5927\u5bb6\u77e5\u9053\uff0c\u4e00\u822cCPU\u90fd\u662f\u4ee5"\u9875"\u4e3a\u5355\u4f4d\u6765\u5206\u914d\u5185\u5b58\u7a7a\u95f4\u7684\uff0c\u6bcf\u4e00\u4e2a\u9875\u90fd\u662f\u5b9e\u9645\u7269\u7406\u5185\u5b58\u7684\u4e00\u4e2a\u6620\u50cf\uff0c\u8c61INTEL\u7684CPU\uff0c\u5176\u4e00\u9875\u5728\u901a\u5e38\u60c5\u51b5\u4e0b\u662f4086\u5b57\u8282\u5927\u5c0f\uff0c\u800c\u65e0\u8bba\u662f\u6570\u636e\u6bb5\u8fd8\u662f\u5806\u6808\u6bb5\u90fd\u662f\u7531\u8bb8\u591a"\u9875"\u6784\u6210\u7684\uff0cfork\u51fd\u6570\u590d\u5236\u8fd9\u4e24\u4e2a\u6bb5\uff0c\u53ea\u662f"\u903b\u8f91"\u4e0a\u7684\uff0c\u5e76\u975e"\u7269\u7406"\u4e0a\u7684\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5b9e\u9645\u6267\u884cfork\u65f6\uff0c\u7269\u7406\u7a7a\u95f4\u4e0a\u4e24\u4e2a\u8fdb\u7a0b\u7684\u6570\u636e\u6bb5\u548c\u5806\u6808\u6bb5\u90fd\u8fd8\u662f\u5171\u4eab\u7740\u7684\uff0c\u5f53\u6709\u4e00\u4e2a\u8fdb\u7a0b\u5199\u4e86\u67d0\u4e2a\u6570\u636e\u65f6\uff0c\u8fd9\u65f6\u4e24\u4e2a\u8fdb\u7a0b\u4e4b\u95f4\u7684\u6570\u636e\u624d\u6709\u4e86\u533a\u522b\uff0c\u7cfb\u7edf\u5c31\u5c06\u6709\u533a\u522b\u7684"\u9875"\u4ece\u7269\u7406\u4e0a\u4e5f\u5206\u5f00\u3002\u7cfb\u7edf\u5728\u7a7a\u95f4\u4e0a\u7684\u5f00\u9500\u5c31\u53ef\u4ee5\u8fbe\u5230\u6700\u5c0f\u3002
\u3000\u3000\u4e0b\u9762\u6f14\u793a\u4e00\u4e2a\u8db3\u4ee5"\u641e\u6b7b"Linux\u7684\u5c0f\u7a0b\u5e8f\uff0c\u5176\u6e90\u4ee3\u7801\u975e\u5e38\u7b80\u5355\uff1a
\u3000\u3000

\u3000\u3000void main()
\u3000\u3000{
\u3000\u3000for( ; ; ) fork();
\u3000\u3000}

\u3000\u3000\u8fd9\u4e2a\u7a0b\u5e8f\u4ec0\u4e48\u4e5f\u4e0d\u505a\uff0c\u5c31\u662f\u6b7b\u5faa\u73af\u5730fork\uff0c\u5176\u7ed3\u679c\u662f\u7a0b\u5e8f\u4e0d\u65ad\u4ea7\u751f\u8fdb\u7a0b\uff0c\u800c\u8fd9\u4e9b\u8fdb\u7a0b\u53c8\u4e0d\u65ad\u4ea7\u751f\u65b0\u7684\u8fdb\u7a0b\uff0c\u5f88\u5feb\uff0c\u7cfb\u7edf\u7684\u8fdb\u7a0b\u5c31\u6ee1\u4e86\uff0c\u7cfb\u7edf\u5c31\u88ab\u8fd9\u4e48\u591a\u4e0d\u65ad\u4ea7\u751f\u7684\u8fdb\u7a0b"\u6491\u6b7b\u4e86"\u3002\u5f53\u7136\u53ea\u8981\u7cfb\u7edf\u7ba1\u7406\u5458\u9884\u5148\u7ed9\u6bcf\u4e2a\u7528\u6237\u8bbe\u7f6e\u53ef\u8fd0\u884c\u7684\u6700\u5927\u8fdb\u7a0b\u6570\uff0c\u8fd9\u4e2a\u6076\u610f\u7684\u7a0b\u5e8f\u5c31\u5b8c\u6210\u4e0d\u4e86\u4f01\u56fe\u4e86\u3002
\u3000\u30002.2.2 exec( )\u51fd\u6570\u65cf
\u3000\u3000\u4e0b\u9762\u6211\u4eec\u6765\u770b\u770b\u4e00\u4e2a\u8fdb\u7a0b\u5982\u4f55\u6765\u542f\u52a8\u53e6\u4e00\u4e2a\u7a0b\u5e8f\u7684\u6267\u884c\u3002\u5728Linux\u4e2d\u8981\u4f7f\u7528exec\u51fd\u6570\u65cf\u3002\u7cfb\u7edf\u8c03\u7528execve\uff08\uff09\u5bf9\u5f53\u524d\u8fdb\u7a0b\u8fdb\u884c\u66ff\u6362\uff0c\u66ff\u6362\u8005\u4e3a\u4e00\u4e2a\u6307\u5b9a\u7684\u7a0b\u5e8f\uff0c\u5176\u53c2\u6570\u5305\u62ec\u6587\u4ef6\u540d\uff08filename\uff09\u3001\u53c2\u6570\u5217\u8868\uff08argv\uff09\u4ee5\u53ca\u73af\u5883\u53d8\u91cf\uff08envp\uff09\u3002exec\u51fd\u6570\u65cf\u5f53\u7136\u4e0d\u6b62\u4e00\u4e2a\uff0c\u4f46\u5b83\u4eec\u5927\u81f4\u76f8\u540c\uff0c\u5728Linux\u4e2d\uff0c\u5b83\u4eec\u5206\u522b\u662f\uff1aexecl\uff0cexeclp\uff0cexecle\uff0cexecv\uff0cexecve\u548cexecvp\uff0c\u4e0b\u9762\u6211\u53ea\u4ee5execlp\u4e3a\u4f8b\uff0c\u5176\u5b83\u51fd\u6570\u7a76\u7adf\u4e0eexeclp\u6709\u4f55\u533a\u522b\uff0c\u8bf7\u901a\u8fc7manexec\u547d\u4ee4\u6765\u4e86\u89e3\u5b83\u4eec\u7684\u5177\u4f53\u60c5\u51b5\u3002
\u3000\u3000\u4e00\u4e2a\u8fdb\u7a0b\u4e00\u65e6\u8c03\u7528exec\u7c7b\u51fd\u6570\uff0c\u5b83\u672c\u8eab\u5c31"\u6b7b\u4ea1"\u4e86\uff0c\u7cfb\u7edf\u628a\u4ee3\u7801\u6bb5\u66ff\u6362\u6210\u65b0\u7684\u7a0b\u5e8f\u7684\u4ee3\u7801\uff0c\u5e9f\u5f03\u539f\u6709\u7684\u6570\u636e\u6bb5\u548c\u5806\u6808\u6bb5\uff0c\u5e76\u4e3a\u65b0\u7a0b\u5e8f\u5206\u914d\u65b0\u7684\u6570\u636e\u6bb5\u4e0e\u5806\u6808\u6bb5\uff0c\u552f\u4e00\u7559\u4e0b\u7684\uff0c\u5c31\u662f\u8fdb\u7a0b\u53f7\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5bf9\u7cfb\u7edf\u800c\u8a00\uff0c\u8fd8\u662f\u540c\u4e00\u4e2a\u8fdb\u7a0b\uff0c\u4e0d\u8fc7\u5df2\u7ecf\u662f\u53e6\u4e00\u4e2a\u7a0b\u5e8f\u4e86\u3002\uff08\u4e0d\u8fc7exec\u7c7b\u51fd\u6570\u4e2d\u6709\u7684\u8fd8\u5141\u8bb8\u7ee7\u627f\u73af\u5883\u53d8\u91cf\u4e4b\u7c7b\u7684\u4fe1\u606f\u3002\uff09
\u3000\u3000\u90a3\u4e48\u5982\u679c\u6211\u7684\u7a0b\u5e8f\u60f3\u542f\u52a8\u53e6\u4e00\u7a0b\u5e8f\u7684\u6267\u884c\u4f46\u81ea\u5df1\u4ecd\u60f3\u7ee7\u7eed\u8fd0\u884c\u7684\u8bdd\uff0c\u600e\u4e48\u529e\u5462\uff1f\u90a3\u5c31\u662f\u7ed3\u5408fork\u4e0eexec\u7684\u4f7f\u7528\u3002\u4e0b\u9762\u4e00\u6bb5\u4ee3\u7801\u663e\u793a\u5982\u4f55\u542f\u52a8\u8fd0\u884c\u5176\u5b83\u7a0b\u5e8f\uff1a

\u3000\u3000char command[256];
\u3000\u3000void main()
\u3000\u3000{
\u3000\u3000int rtn; /*\u5b50\u8fdb\u7a0b\u7684\u8fd4\u56de\u6570\u503c*/
\u3000\u3000while(1) {
\u3000\u3000/* \u4ece\u7ec8\u7aef\u8bfb\u53d6\u8981\u6267\u884c\u7684\u547d\u4ee4 */
\u3000\u3000printf( ">" );
\u3000\u3000fgets( command, 256, stdin );
\u3000\u3000command[strlen(command)-1] = 0;
\u3000\u3000if ( fork() == 0 ) {
\u3000\u3000/* \u5b50\u8fdb\u7a0b\u6267\u884c\u6b64\u547d\u4ee4 */
\u3000\u3000execlp( command, command );
\u3000\u3000/* \u5982\u679cexec\u51fd\u6570\u8fd4\u56de\uff0c\u8868\u660e\u6ca1\u6709\u6b63\u5e38\u6267\u884c\u547d\u4ee4\uff0c\u6253\u5370\u9519\u8bef\u4fe1\u606f*/
\u3000\u3000perror( command );
\u3000\u3000exit( errorno );
\u3000\u3000}
\u3000\u3000else {
\u3000\u3000/* \u7236\u8fdb\u7a0b\uff0c \u7b49\u5f85\u5b50\u8fdb\u7a0b\u7ed3\u675f\uff0c\u5e76\u6253\u5370\u5b50\u8fdb\u7a0b\u7684\u8fd4\u56de\u503c */
\u3000\u3000wait ( &rtn );
\u3000\u3000printf( " child process return %d/n",. rtn );
\u3000\u3000}
\u3000\u3000}
\u3000\u3000}

\u3000\u3000

\u3000\u3000\u6b64\u7a0b\u5e8f\u4ece\u7ec8\u7aef\u8bfb\u5165\u547d\u4ee4\u5e76\u6267\u884c\u4e4b\uff0c\u6267\u884c\u5b8c\u6210\u540e\uff0c\u7236\u8fdb\u7a0b\u7ee7\u7eed\u7b49\u5f85\u4ece\u7ec8\u7aef\u8bfb\u5165\u547d\u4ee4\u3002\u719f\u6089DOS\u548cWINDOWS\u7cfb\u7edf\u8c03\u7528\u7684\u670b\u53cb\u4e00\u5b9a\u77e5\u9053DOS/WINDOWS\u4e5f\u6709exec\u7c7b\u51fd\u6570\uff0c\u5176\u4f7f\u7528\u65b9\u6cd5\u662f\u7c7b\u4f3c\u7684\uff0c\u4f46DOS/WINDOWS\u8fd8\u6709spawn\u7c7b\u51fd\u6570\uff0c\u56e0\u4e3aDOS\u662f\u5355\u4efb\u52a1\u7684\u7cfb\u7edf\uff0c\u5b83\u53ea\u80fd\u5c06"\u7236\u8fdb\u7a0b"\u9a7b\u7559\u5728\u673a\u5668\u5185\u518d\u6267\u884c"\u5b50\u8fdb\u7a0b"\uff0c\u8fd9\u5c31\u662fspawn\u7c7b\u7684\u51fd\u6570\u3002WIN32\u5df2\u7ecf\u662f\u591a\u4efb\u52a1\u7684\u7cfb\u7edf\u4e86\uff0c\u4f46\u8fd8\u4fdd\u7559\u4e86spawn\u7c7b\u51fd\u6570\uff0cWIN32\u4e2d\u5b9e\u73b0spawn\u51fd\u6570\u7684\u65b9\u6cd5\u540c\u524d\u8ff0UNIX\u4e2d\u7684\u65b9\u6cd5\u5dee\u4e0d\u591a\uff0c\u5f00\u8bbe\u5b50\u8fdb\u7a0b\u540e\u7236\u8fdb\u7a0b\u7b49\u5f85\u5b50\u8fdb\u7a0b\u7ed3\u675f\u540e\u624d\u7ee7\u7eed\u8fd0\u884c\u3002UNIX\u5728\u5176\u4e00\u5f00\u59cb\u5c31\u662f\u591a\u4efb\u52a1\u7684\u7cfb\u7edf\uff0c\u6240\u4ee5\u4ece\u6838\u5fc3\u89d2\u5ea6\u4e0a\u8bb2\u4e0d\u9700\u8981spawn\u7c7b\u51fd\u6570\u3002
\u3000\u3000\u5728\u8fd9\u4e00\u8282\u91cc\uff0c\u6211\u4eec\u8fd8\u8981\u8bb2\u8bb2system\uff08\uff09\u548cpopen\uff08\uff09\u51fd\u6570\u3002system\uff08\uff09\u51fd\u6570\u5148\u8c03\u7528fork\uff08\uff09\uff0c\u7136\u540e\u518d\u8c03\u7528exec\uff08\uff09\u6765\u6267\u884c\u7528\u6237\u7684\u767b\u5f55shell\uff0c\u901a\u8fc7\u5b83\u6765\u67e5\u627e\u53ef\u6267\u884c\u6587\u4ef6\u7684\u547d\u4ee4\u5e76\u5206\u6790\u53c2\u6570\uff0c\u6700\u540e\u5b83\u4e48\u4f7f\u7528wait\uff08\uff09\u51fd\u6570\u65cf\u4e4b\u4e00\u6765\u7b49\u5f85\u5b50\u8fdb\u7a0b\u7684\u7ed3\u675f\u3002\u51fd\u6570popen\uff08\uff09\u548c\u51fd\u6570system\uff08\uff09\u76f8\u4f3c\uff0c\u4e0d\u540c\u7684\u662f\u5b83\u8c03\u7528pipe\uff08\uff09\u51fd\u6570\u521b\u5efa\u4e00\u4e2a\u7ba1\u9053\uff0c\u901a\u8fc7\u5b83\u6765\u5b8c\u6210\u7a0b\u5e8f\u7684\u6807\u51c6\u8f93\u5165\u548c\u6807\u51c6\u8f93\u51fa\u3002\u8fd9\u4e24\u4e2a\u51fd\u6570\u662f\u4e3a\u90a3\u4e9b\u4e0d\u592a\u52e4\u5feb\u7684\u7a0b\u5e8f\u5458\u8bbe\u8ba1\u7684\uff0c\u5728\u6548\u7387\u548c\u5b89\u5168\u65b9\u9762\u90fd\u6709\u76f8\u5f53\u7684\u7f3a\u9677\uff0c\u5728\u53ef\u80fd\u7684\u60c5\u51b5\u4e0b\uff0c\u5e94\u8be5\u5c3d\u91cf\u907f\u514d\u3002

多进程程序结构和多线程程序结构有很大的不同,多线程程序结构相对于多进程程序结构有以下的优势:
1、方便的通信和数据交换
线程间有方便的通信和数据交换机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。
2、更高效的利用CPU
使用多线程可以加快应用程序的响应。这对图形界面的程序尤其有意义,假如一个操作耗时很长,那么整个系统都会等它操作,此时程序不会响应键盘、鼠标、菜单等操作,而使用多线程技术,将耗时长的操作置于一个新的线程,就可以避免这种尴尬情况的发生。
同时多线程使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。
具体可以看ZLG的《嵌入式Linux开发教程》上册。

  • Linux绯荤粺涓鐨杩涚▼璋冨害浠嬬粛
    绛旓細鑰linux鍦ㄧ己椤靛紓甯哥殑澶勭悊浠g爜涓瘯鍥惧垎閰嶅唴瀛樻椂,鍙堝彲鑳界敱浜绯荤粺鍐呭瓨绱х己鑰屽垎閰嶅け璐,瀵艰嚧杩涚▼杩涘叆鐫$湢;2銆佷唬鐮佹墽琛岃繃绋嬩腑纭欢浜х敓涓柇,linux杩涘叆涓柇澶勭悊绋嬪簭鑰屾悂缃綋鍓嶈繘绋嬨傝屼腑鏂鐞嗙▼搴忕殑澶勭悊杩囩▼涓張鍙兘鍙戠敓鏂扮殑纭欢涓柇,涓柇姘歌繙宓屽涓嶆鈥︹;绛夌瓑鈥︹﹁屽儚linux杩欐牱鍙风О瀹炵幇浜嗏滃疄鏃垛濈殑閫氱敤鎿嶄綔绯荤粺,鍏跺疄鍙槸瀹炵幇浜...
  • Linux杩涚▼鍜岀嚎绋嬬殑鍩虹涓庣鐞
    绛旓細Linux鎻愪緵浜嗕竴鏉stree鍛戒护,鍏佽鐢ㄦ埛鏌ョ湅绯荤粺鍐呮鍦ㄨ繍琛岀殑鍚勪釜杩涚▼涔嬮棿鐨勭户鎵垮叧绯汇傜洿鎺ュ湪鍛戒护琛屼腑杈撳叆pstree鍗冲彲,绋嬪簭浼氫互鏍戠姸缁撴瀯鏂瑰紡鍒楀嚭绯荤粺涓鍦ㄨ繍琛岀殑鍚勮繘绋嬩箣闂寸殑缁ф壙鍏崇郴銆 涓.鐞嗚ВLinux涓嬭繘绋鐨勭粨鏋 Linux涓涓涓繘绋嬪湪鍐呭瓨閲屾湁涓夐儴鍒嗘暟鎹,灏辨槸鈥滄暟鎹鈥濄佲滃爢鏍堟鈥濄佲滀唬鐮佹鈥濄傚熀浜嶪386鍏煎鐨勪腑澶鐞嗗櫒...
  • 涓涓Linux澶氳繘绋缂栫▼?
    绛旓細涓嬮潰,鎴戜滑灏嗕粙缁鍦↙inux涓嬬紪鍐澶氳繘绋鍜屽绾跨▼绋嬪簭鐨勪竴浜涘垵姝ョ煡璇嗐 2 澶氳繘绋嬬紪绋嬩粈涔堟槸涓涓繘绋?杩涚▼杩欎釜姒傚康鏄拡瀵绯荤粺鑰屼笉鏄拡瀵圭敤鎴风殑,瀵圭敤鎴锋潵璇,浠栭潰瀵圭殑姒傚康鏄▼搴忋傚綋鐢ㄦ埛鏁插叆鍛戒护鎵ц涓涓▼搴忕殑鏃跺,瀵圭郴缁熻岃█,瀹冨皢鍚姩涓涓繘绋嬨備絾鍜岀▼搴忎笉鍚岀殑鏄,鍦ㄨ繖涓繘绋嬩腑,绯荤粺鍙兘闇瑕佸啀鍚姩涓涓垨澶氫釜杩涚▼鏉ュ畬鎴...
  • linux涓杩涚▼绋嬪簭鍜屽绾跨▼绋嬪簭鐨勫尯鍒
    绛旓細搴旇璇达紝澶氱嚎绋嬫瘮澶氳繘绋鎴愭湰浣庯紝浣嗘ц兘鏇翠綆銆傚湪UNIX鐜锛屽杩涚▼璋冨害寮閿姣斿绾跨▼璋冨害寮閿锛屾病鏈夋樉钁楀尯鍒紝灏辨槸璇达紝UNIX杩涚▼璋冨害鏁堢巼鏄緢楂樼殑銆傚唴瀛樻秷鑰楁柟闈紝浜岃呭彧宸叏灞鏁版嵁鍖猴紝鐜板湪鍐呭瓨閮藉緢渚垮疁锛屾湇鍔″櫒鍐呭瓨鍔ㄨ緞鑻ュ共G锛屾牴鏈笉鏄棶棰樸傚杩涚▼鏄珛浣撲氦閫绯荤粺锛岃櫧鐒堕犱环楂橈紝涓婂潯涓嬪潯澶氳楃偣娌癸紝浣嗘槸涓嶅牭杞︺
  • 鏈変竴涓叿鏈変袱閬撲綔涓氱殑鎵瑰鐞绯荤粺,浣滀笟璋冨害閲囩敤鐭綔涓氫紭鍏堣皟搴︾畻娉,杩涚▼...
    绛旓細a鍏堝埌杈惧厛杩愯锛岃繍琛20鍒嗛挓鍚嶣鍒拌揪锛屼笖浼樺厛绾ч珮浜巃锛宐鍗虫姠鍗燾pu锛岃繍琛岃繃绋嬩腑c锛宒鍒拌揪锛屼絾鏄粬浠殑浼樺厛绾т綆浜巄锛屾墍浠涓鐩磋繍琛屽畬锛屾鏃舵墍鏈夌殑浣滀笟閮藉湪绛夊緟锛岀幇鍦ㄦ槸鐭綔涓氫紭鍏堬紝鍗虫槸a鍏堣繍琛岋紝鐒跺悗鏄痙锛屾渶鍚庢槸c a 杩涘叆鏃堕棿 10锛:50 缁撴潫锛11:10 b 杩涘叆鏃堕棿 10锛:20 缁撴潫锛10:50 c ...
  • LINUX涓嬬郴缁缂栫▼,澶氳繘绋闂存暟鎹叡浜,鍗冲叡浜彉閲
    绛旓細2. 鎺ョ潃璋冪敤shmat灏嗚繖娈靛叡浜唴瀛樻槧灏勫埌浣犵殑杩涚▼鐨勮櫄鎷熷湴鍧绌洪棿涓娿傝繖涓嚱鏁扮殑绗竴涓弬鏁板氨鏄綘涔嬪墠璋冪敤shmget鍒涘缓鐨勫叡浜唴瀛樼殑鍚嶅瓧shmid锛涚浜屼釜鍙傛暟鏄釜鎸囬拡锛屾寚鍚戜綘鐨勮繘绋嬭櫄瀛樼┖闂翠腑鐨勬煇涓湴鍧锛屼綘鍙互閫氳繃浼犲叆涓涓‘瀹氱殑鍦板潃寮鸿瑕佹眰鎿嶄綔绯荤粺灏嗗叡浜唴瀛樻槧灏勫埌浣犳寚瀹氱殑铏氬瓨鍦板潃涓婏紙鍙兘浼氬け璐ワ紝濡傛灉浣...
  • 鍦╨inux涓嬬敤c璇█瀹炵幇鐢澶氳繘绋鍚屾鏂规硶婕旂ず鈥滅敓浜ц-娑堣垂鑰呪濋棶棰榑鐧惧害...
    绛旓細1 澶氳繘绋闂磋繘琛岄氫俊锛2 浣跨敤鍚屾淇″彿閲忥紙semaphore锛夊拰浜掓枼淇″彿閲忥紙mutex锛夎繘琛屾暟鎹繚鎶ゃ傚弬鑰冧唬鐮佸涓嬶紝鍙互鍙傜収娉ㄩ噴杈呭姪鐞嗚В锛歩nclude <stdio.h>#include <stdlib.h>#include <unistd.h>#include <pthread.h>#include <semaphore.h>#define N 2 // 娑堣垂鑰呮垨鑰呯敓浜ц呯殑鏁扮洰#define M 10 // ...
  • Linux杩涚▼绠$悊鍙婁綔涓氭帶鍒剁殑鍚姩杩涚▼
    绛旓細閿叆闇瑕佽繍琛岀殑绋嬪簭鐨勭▼搴忓悕,鎵ц涓涓▼搴,鍏跺疄涔熷氨鏄惎鍔ㄤ簡涓涓杩涚▼銆鍦↙inux绯荤粺涓姣忎釜杩涚▼閮藉叿鏈変竴涓繘绋嬪彿,鐢ㄤ簬绯荤粺璇嗗埆鍜岃皟搴﹁繘绋嬨傚惎鍔ㄤ竴涓繘绋嬫湁涓や釜涓昏閫斿緞:鎵嬪伐鍚姩鍜岃皟搴﹀惎鍔,鍚庤呮槸浜嬪厛杩涜璁剧疆,鏍规嵁鐢ㄦ埛瑕佹眰鑷鍚姩銆 鐢辩敤鎴疯緭鍏ュ懡浠,鐩存帴鍚姩涓涓繘绋嬩究鏄墜宸ュ惎鍔ㄨ繘绋嬨備絾鎵嬪伐鍚姩杩涚▼鍙堝彲浠ュ垎涓哄緢澶氱...
  • Linux涓鍚姩杩涚▼鐨勬柟娉曟湁鍝簺?鍝鏇村ソ鐢?
    绛旓細Linux鎵嬪伐鍚姩杩涚▼ 鎵嬪伐鍚姩杩涚▼鎸囩殑鏄敱鐢ㄦ埛杈撳叆鍛戒护鐩存帴鍚姩涓涓繘绋嬶紝鏍规嵁鎵鍚姩鐨勮繘绋嬬被鍨嬪拰鎬ц川涓嶅悓锛屽張缁嗗垎涓哄墠鍙板惎鍔ㄥ拰鍚庡彴鍚姩涓ょ銆傚墠鍙板惎鍔ㄨ繘绋 杩欐槸鎵嬪伐鍚姩杩涚▼鏈甯哥敤鐨勬柟寮忥紝鍥犱负褰撴椂杈撳叆涓涓懡浠ゅ苟杩愯锛屽氨宸茬粡鍚姩浜嗕竴涓繘绋嬶紝鑰屼笖鏄竴涓墠鍙扮殑杩涚▼锛屾鏃绯荤粺鍏跺疄宸茬粡澶勪簬涓涓澶氳繘绋鐨勭姸鎬侊紝...
  • Linux鐜涓婥寮鍙慱linux鎼缓c璇█寮鍙戠幆澧
    绛旓細涓夛細Linux绯荤粺缂栫▼閲嶇偣瀛︿範鏍囧噯I/O搴擄紝Linux澶浠诲姟缂栫▼涓殑澶氳繘绋鍜屽绾跨▼锛屼互鍙婅繘绋嬮棿閫氫俊(pipe銆丗IFO銆佹秷鎭槦鍒椼佸叡浜唴瀛樸乻ignal銆佷俊鍙烽噺绛)锛屽悓姝ヤ笌浜掓枼瀵瑰叡浜祫婧愯闂帶鍒剁瓑閲嶈鐭ヨ瘑锛屼富瑕佹彁鍗囧Linux搴旂敤寮鍙戠殑鐞嗚В鍜屼唬鐮佽皟璇曠殑鑳藉姏銆傚洓锛歀inux缃戠粶缂栫▼璁$畻鏈虹綉缁滃湪宓屽叆寮廘inux绯荤粺搴旂敤寮鍙戣繃绋嬩腑浣跨敤闈炲父...
  • 扩展阅读:linux杀死进程命令kill 9 ... linux怎么恢复原来的系统 ... linux系统查看进程状态 ... 能开机但是进不去系统 ... 开机进不了windows系统 ... linux系统详细安装步骤 ... linux彻底杀死进程 ... linux系统查看僵尸进程 ... 如何在linux系统编写c程序 ...

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