{"id":688,"date":"2025-04-10T08:30:36","date_gmt":"2025-04-10T00:30:36","guid":{"rendered":"https:\/\/www.sxr666.cn\/?p=688"},"modified":"2025-06-05T09:34:53","modified_gmt":"2025-06-05T01:34:53","slug":"%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c","status":"publish","type":"post","link":"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/","title":{"rendered":"\u64cd\u4f5c\u7cfb\u7edf\u5934\u6b4c"},"content":{"rendered":"<div class=\"has-text-align-right has-link-color wp-block-post-date__modified-date has-text-color has-accent-1-color wp-block-post-date wp-elements-417b13be1c360bdea8f59f901d88a9b5\"><time datetime=\"2025-06-05T09:34:53+08:00\">\u4fee\u6539\u65e5\u671f\uff1a2025\u5e746\u67085\u65e5<\/time><\/div>\n\n\n<p><\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Linux%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E4%B9%8B%E4%B8%80%EF%BC%88%E5%B1%9E%E6%80%A7%E8%8E%B7%E5%8F%96%EF%BC%8Cfork%E3%80%81exit%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89\" >Linux\u8fdb\u7a0b\u7ba1\u7406\u4e4b\u4e00\uff08\u5c5e\u6027\u83b7\u53d6\uff0cfork\u3001exit\u7684\u4f7f\u7528\uff09<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E8%8E%B7%E5%8F%96%E8%BF%9B%E7%A8%8B%E5%B8%B8%E8%A7%81%E5%B1%9E%E6%80%A7\" >\u7b2c1\u5173\uff1a\u83b7\u53d6\u8fdb\u7a0b\u5e38\u89c1\u5c5e\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%93%8D%E4%BD%9C-fork\" >\u7b2c2\u5173\uff1a\u8fdb\u7a0b\u521b\u5efa\u64cd\u4f5c-fork<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E7%BB%88%E6%AD%A2\" >\u7b2c3\u5173\uff1a\u8fdb\u7a0b\u7ec8\u6b62<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E4%B9%8B%E4%BA%8C%EF%BC%88wait%E3%80%81exec%E3%80%81system%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89\" >\u8fdb\u7a0b\u7ba1\u7406\u4e4b\u4e8c\uff08wait\u3001exec\u3001system\u7684\u4f7f\u7528\uff09<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E7%AD%89%E5%BE%85\" >\u7b2c1\u5173\uff1a\u8fdb\u7a0b\u7b49\u5f85<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%93%8D%E4%BD%9C-exec%E5%87%BD%E6%95%B0%E6%97%8F\" >\u7b2c2\u5173\uff1a\u8fdb\u7a0b\u521b\u5efa\u64cd\u4f5c-exec\u51fd\u6570\u65cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%93%8D%E4%BD%9C-system\" >\u7b2c3\u5173\uff1a\u8fdb\u7a0b\u521b\u5efa\u64cd\u4f5c-system<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E5%87%BD%E6%95%B0\" >\u51fd\u6570<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E6%B1%82%E5%92%8C\" >\u7b2c1\u5173\uff1a\u6c42\u548c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E5%9B%9E%E6%96%87%E6%95%B0%E8%AE%A1%E7%AE%97\" >\u7b2c2\u5173\uff1a\u56de\u6587\u6570\u8ba1\u7b97<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A_%E7%BC%96%E5%86%99%E5%87%BD%E6%95%B0%E6%B1%82%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%80%BC\" >\u7b2c3\u5173\uff1a&nbsp;\u7f16\u5199\u51fd\u6570\u6c42\u8868\u8fbe\u5f0f\u7684\u503c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC4%E5%85%B3%EF%BC%9A%E9%98%B6%E4%B9%98%E6%95%B0%E5%88%97\" >\u7b2c4\u5173\uff1a\u9636\u4e58\u6570\u5217<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC5%E5%85%B3%EF%BC%9A%E4%BA%B2%E5%AF%86%E6%95%B0\" >\u7b2c5\u5173\uff1a\u4eb2\u5bc6\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC6%E5%85%B3%EF%BC%9A%E5%85%AC%E7%BA%A6%E5%85%AC%E5%80%8D%E6%95%B0\" >\u7b2c6\u5173\uff1a\u516c\u7ea6\u516c\u500d\u6570<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%83%A8%E5%88%86_%E6%8C%87%E9%92%88%EF%BC%88%E4%B8%80%EF%BC%89\" >\u7a0b\u5e8f\u8bbe\u8ba1\u90e8\u5206 \u6307\u9488\uff08\u4e00\uff09<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E7%9A%84%E4%BD%BF%E7%94%A8\" >\u7b2c1\u5173\uff1a\u6307\u9488\u7684\u4f7f\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E8%BF%90%E7%AE%97\" >\u7b2c2\u5173\uff1a\u6307\u9488\u8fd0\u7b97<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%B8%8E%E6%95%B0%E7%BB%84\" >\u7b2c3\u5173\uff1a\u6307\u9488\u4e0e\u6570\u7ec4<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%83%A8%E5%88%86_%E6%8C%87%E9%92%88%EF%BC%88%E4%BA%8C%EF%BC%89\" >\u7a0b\u5e8f\u8bbe\u8ba1\u90e8\u5206 \u6307\u9488\uff08\u4e8c\uff09<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%8E%E6%8C%87%E9%92%88\" >\u7b2c1\u5173\uff1a\u5b57\u7b26\u4e32\u4e0e\u6307\u9488<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%B8%8E%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84\" >\u7b2c2\u5173\uff1a\u6307\u9488\u4e0e\u4e8c\u7ef4\u6570\u7ec4<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%83%A8%E5%88%86_%E6%8C%87%E9%92%88%EF%BC%88%E4%B8%89%EF%BC%89\" >\u7a0b\u5e8f\u8bbe\u8ba1\u90e8\u5206 \u6307\u9488\uff08\u4e09\uff09<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0\" >\u7b2c1\u5173\uff1a\u6307\u9488\u4f5c\u4e3a\u51fd\u6570\u53c2\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E5%80%BC\" >\u7b2c2\u5173\uff1a\u6307\u9488\u4f5c\u4e3a\u51fd\u6570\u8fd4\u56de\u503c<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Linux%E4%B9%8BC%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8\" >Linux\u4e4bC\u7f16\u7a0b\u5165\u95e8<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E7%AC%AC%E4%B8%80%E4%B8%AAC%E7%A8%8B%E5%BA%8F\" >\u7b2c1\u5173\uff1a\u7b2c\u4e00\u4e2aC\u7a0b\u5e8f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9ALinux%E7%BC%96%E8%AF%91C%E7%A8%8B%E5%BA%8F\" >\u7b2c2\u5173\uff1aLinux\u7f16\u8bd1C\u7a0b\u5e8f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Pintos%E7%9A%84%E7%BC%96%E8%AF%91%E3%80%81%E8%BF%90%E8%A1%8C%E5%92%8C%E8%B0%83%E8%AF%95\" >Pintos\u7684\u7f16\u8bd1\u3001\u8fd0\u884c\u548c\u8c03\u8bd5<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83%E4%BD%93%E9%AA%8C\" >\u7b2c1\u5173\uff1a\u5b9e\u9a8c\u73af\u5883\u4f53\u9a8c<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Linux%E4%B9%8B%E7%BA%BF%E7%A8%8B%E7%AE%A1%E7%90%86\" >Linux\u4e4b\u7ebf\u7a0b\u7ba1\u7406<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E5%88%9B%E5%BB%BA%E7%BA%BF%E7%A8%8B\" >\u7b2c1\u5173\uff1a\u521b\u5efa\u7ebf\u7a0b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E7%BA%BF%E7%A8%8B%E6%8C%82%E8%B5%B7\" >\u7b2c2\u5173\uff1a\u7ebf\u7a0b\u6302\u8d77<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E7%BA%BF%E7%A8%8B%E7%BB%88%E6%AD%A2\" >\u7b2c3\u5173\uff1a\u7ebf\u7a0b\u7ec8\u6b62<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Linux%E4%B9%8B%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5%E4%B8%80\" >Linux\u4e4b\u7ebf\u7a0b\u540c\u6b65\u4e00<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E4%BA%92%E6%96%A5%E9%94%81\" >\u7b2c1\u5173\uff1a\u4e92\u65a5\u9501<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%87%AA%E6%97%8B%E9%94%81\" >\u7b2c2\u5173\uff1a\u81ea\u65cb\u9501<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E6%9D%A1%E4%BB%B6%E5%8F%98%E9%87%8F\" >\u7b2c3\u5173\uff1a\u6761\u4ef6\u53d8\u91cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC4%E5%85%B3%EF%BC%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98\" >\u7b2c4\u5173\uff1a\u9879\u76ee\u5b9e\u6218<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Linux%E4%B9%8B%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5%E4%BA%8C\" >Linux\u4e4b\u7ebf\u7a0b\u540c\u6b65\u4e8c<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E4%BF%A1%E5%8F%B7%E9%87%8F\" >\u7b2c1\u5173\uff1a\u4fe1\u53f7\u91cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%AF%BB%E5%86%99%E9%94%81\" >\u7b2c2\u5173\uff1a\u8bfb\u5199\u9501<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98\" >\u7b2c3\u5173\uff1a\u9879\u76ee\u5b9e\u6218<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#Pintos%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%EF%BC%9A%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8\" >Pintos\u57fa\u7840\u6570\u636e\u7ed3\u6784\uff1a\u901a\u7528\u94fe\u8868<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC1%E5%85%B3%EF%BC%9A%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8\" >\u7b2c1\u5173\uff1a\u901a\u7528\u94fe\u8868\u7684\u57fa\u672c\u4f7f\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC2%E5%85%B3%EF%BC%9A%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8%E7%9A%84%E9%A6%96%E5%9C%B0%E5%9D%80%E8%AE%A1%E7%AE%97\" >\u7b2c2\u5173\uff1a\u901a\u7528\u94fe\u8868\u7684\u9996\u5730\u5740\u8ba1\u7b97<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/www.sxr666.cn\/index.php\/2025\/04\/10\/%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%a4%b4%e6%ad%8c\/#%E7%AC%AC3%E5%85%B3%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E7%9A%84%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8%E6%93%8D%E4%BD%9C\" >\u7b2c3\u5173\uff1a\u57fa\u4e8e\u51fd\u6570\u6307\u9488\u7684\u901a\u7528\u94fe\u8868\u64cd\u4f5c<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Linux%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E4%B9%8B%E4%B8%80%EF%BC%88%E5%B1%9E%E6%80%A7%E8%8E%B7%E5%8F%96%EF%BC%8Cfork%E3%80%81exit%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89\"><\/span>Linux\u8fdb\u7a0b\u7ba1\u7406\u4e4b\u4e00\uff08\u5c5e\u6027\u83b7\u53d6\uff0cfork\u3001exit\u7684\u4f7f\u7528\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E8%8E%B7%E5%8F%96%E8%BF%9B%E7%A8%8B%E5%B8%B8%E8%A7%81%E5%B1%9E%E6%80%A7\"><\/span>\u7b2c1\u5173\uff1a\u83b7\u53d6\u8fdb\u7a0b\u5e38\u89c1\u5c5e\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;stdio.h&gt;\n\n\/**********************\n * pid: \u5f53\u524d\u8fdb\u7a0bID\n * ppid: \u7236\u8fdb\u7a0bID\n***********************\/\nstruct procIDInfo\n{\n\tpid_t pid;\n\tpid_t ppid;\n};\n\n\/************************\n * \u8fd4\u56de\u503c: \u9700\u8981\u88ab\u6253\u5f00\u7684\u76ee\u5f55\u8def\u5f84\n*************************\/\nstruct procIDInfo getProcInfo()\n{\n\tstruct procIDInfo ret;   \/\/\u5b58\u653e\u8fdb\u7a0bID\u4fe1\u606f\uff0c\u5e76\u8fd4\u56de\n\t\/********** BEGIN **********\/\n\tret.pid = getpid();\n\tret.ppid = getppid();\n\t\n\t\/********** END **********\/\n\n\treturn ret;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%93%8D%E4%BD%9C-fork\"><\/span>\u7b2c2\u5173\uff1a\u8fdb\u7a0b\u521b\u5efa\u64cd\u4f5c-fork<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;errno.h&gt;\n\n\/************************\n * \u63d0\u793a: \u4e0d\u8981\u5728\u5b50\u8fdb\u7a0b\u6216\u7236\u8fdb\u7a0b\u4e2d\u4f7f\u7528exit\u51fd\u6570\u6216\u8005return\u6765\u9000\u51fa\u7a0b\u5e8f\n*************************\/\nvoid createProcess()\n{\n\t\/********** BEGIN **********\/\n\tpid_t pid;\n    pid = fork();\n    if(pid == -1) {\n        \/\/\u521b\u5efa\u8fdb\u7a0b\u5931\u8d25\n        printf(\"\u521b\u5efa\u8fdb\u7a0b\u5931\u8d25(%s)!\\n\", strerror(errno));\n        return -1;\n    }\n    else if(pid == 0) {\n        \/\/\u5b50\u8fdb\u7a0b\n        printf(\"Children\");\n    }\n    else {\n        \/\/\u7236\u8fdb\u7a0b\n        printf(\"Parent\");\n    }\n    \n\t\n\t\/********** END **********\/\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E7%BB%88%E6%AD%A2\"><\/span>\u7b2c3\u5173\uff1a\u8fdb\u7a0b\u7ec8\u6b62<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;stdio.h&gt;\n\n\/************************\n * \u63d0\u793a: \u7528\u6237\u9700\u8981\u5728exitProcess\u51fd\u6570\u4e2d\u4f7f\u7528atexit\u51fd\u6570\u6ce8\u518c\u4e00\u4e2a\u81ea\u5b9a\u4e49\u51fd\u6570\uff0c\u5e76\u5728\u81ea\u5b9a\u4e49\u51fd\u6570\u4e2d\u6253\u5370\u51fa\u5f53\u524d\u8fdb\u7a0bID\u53f7\n*************************\/\n\nvoid printPID()\n{\n\tprintf(\"%d\", getpid());\n}\n\n\nvoid exitProcess()\n{\n\t\/********** BEGIN **********\/\n\t\n\tif (atexit(printPID) != 0){\n\t\tprintf(\"\u8c03\u7528atexit\u51fd\u6570\u9519\u8bef\\n\");\n\t}\n\t\/********** END **********\/\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E4%B9%8B%E4%BA%8C%EF%BC%88wait%E3%80%81exec%E3%80%81system%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89\"><\/span>\u8fdb\u7a0b\u7ba1\u7406\u4e4b\u4e8c\uff08wait\u3001exec\u3001system\u7684\u4f7f\u7528\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E7%AD%89%E5%BE%85\"><\/span>\u7b2c1\u5173\uff1a\u8fdb\u7a0b\u7b49\u5f85<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/wait.h&gt;\n#include &lt;stdio.h&gt;\n\n\n\/************************\n * \u8fd4\u56de\u503c: \u8c03\u7528\u6210\u529f\u4e14\u5b50\u8fdb\u7a0b\u6b63\u5e38\u9000\u51fa\u8fd4\u56de\u9000\u51fa\u4ee3\u7801\uff0c\u5426\u5219\u8fd4\u56de-1\n*************************\/\nint waitProcess()\n{\n\tint status = -1;\n    \/********** BEGIN **********\/\n    pid_t pid = fork(); \/\/ \u521b\u5efa\u5b50\u8fdb\u7a0b\n    if (pid == -1)\n    {\n        perror(\"fork failed\");\n        return -1;\n    }\n    else if (pid == 0)\n    {\n        \/\/ \u5b50\u8fdb\u7a0b\n        sleep(2); \/\/ \u6a21\u62df\u5b50\u8fdb\u7a0b\u5de5\u4f5c\n        printf(\"\u5b50\u8fdb\u7a0b\u6267\u884c\u5b8c\u6bd5\uff0c\u9000\u51fa\u4ee3\u7801\u4e3a 42\\n\");\n        exit(42); \/\/ \u5b50\u8fdb\u7a0b\u9000\u51fa\uff0c\u8fd4\u56de\u4ee3\u7801 42\n    }\n    else\n    {\n        \/\/ \u7236\u8fdb\u7a0b\n        pid_t ret = wait(&amp;status); \/\/ \u7b49\u5f85\u5b50\u8fdb\u7a0b\u7ed3\u675f\n        if (ret == -1)\n        {\n            perror(\"wait failed\");\n            return -1;\n        }\n        if (WIFEXITED(status)) \/\/ \u68c0\u67e5\u5b50\u8fdb\u7a0b\u662f\u5426\u6b63\u5e38\u9000\u51fa\n        {\n            status = WEXITSTATUS(status); \/\/ \u83b7\u53d6\u5b50\u8fdb\u7a0b\u7684\u9000\u51fa\u4ee3\u7801\n        }\n        else\n        {\n            status = -1; \/\/ \u5982\u679c\u5b50\u8fdb\u7a0b\u975e\u6b63\u5e38\u9000\u51fa\uff0c\u8fd4\u56de -1\n        }\n    }\n    \/********** END **********\/\n\t\n\treturn status;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%93%8D%E4%BD%9C-exec%E5%87%BD%E6%95%B0%E6%97%8F\"><\/span>\u7b2c2\u5173\uff1a\u8fdb\u7a0b\u521b\u5efa\u64cd\u4f5c-exec\u51fd\u6570\u65cf<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;string.h&gt;\n#include &lt;errno.h&gt;\n\n\/************************\n * \u63d0\u793a: \u5728\u5b50\u8fdb\u7a0b\u4e2d\u5982\u679c\u6267\u884cexec\u51fd\u6570\u5931\u8d25\u8981\u4f7f\u7528exit\u51fd\u6570\u6b63\u786e\u9000\u51fa\u5b50\u8fdb\u7a0b\n*************************\/\nint execlProcess()\n{\n\tpid_t pid = vfork();\n\tif(pid == -1)\n\t{\n\t\tprintf(\"\u521b\u5efa\u5b50\u8fdb\u7a0b\u5931\u8d25(%s)\\n\", strerror(errno));\n\t\treturn -1;\n\t}\n\telse if(pid == 0)\n\t{\n\t\t\/\/\u5b50\u8fdb\u7a0b\n\t\t\/********** BEGIN **********\/\n\t\tif(execlp(\"touch\", \"touch\", \"testFile\",  NULL) &lt; 0)\n        {\n            \/\/\u6267\u884cexeclp\u51fd\u6570\u5931\u8d25\n            exit(-1);\n        }\n\t\t\n\t\t\/********** END **********\/\n\t}\n\telse\n\t{\n\t\t\/\/\u7236\u8fdb\u7a0b\n\t\t\/********** BEGIN **********\/\n\t\tprintf(\"Parent Process\");\n\t\t\n\t\t\/********** END **********\/\n\t}\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E8%BF%9B%E7%A8%8B%E5%88%9B%E5%BB%BA%E6%93%8D%E4%BD%9C-system\"><\/span>\u7b2c3\u5173\uff1a\u8fdb\u7a0b\u521b\u5efa\u64cd\u4f5c-system<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdlib.h&gt;\n#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;errno.h&gt;\n\n\/************************\n * \u8fd4\u56de\u503c: \u8c03\u7528\u6210\u529f\u8fd4\u56de\u547d\u4ee4\u7684\u72b6\u6001\u7801\uff0c\u5931\u8d25\u8fd4\u56de-1\n*************************\/\nint createProcess()\n{\n    int ret = -1;\n    \/********** BEGIN **********\/\n    ret = system(\"mkdir testDir\");\n    if (ret == -1)\n    {\n        printf(\"\u521b\u5efa\u76ee\u5f55\u5931\u8d25(%s)\\n\", strerror(errno));\n    }\n    \/********** END **********\/\n    \n    return ret;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%87%BD%E6%95%B0\"><\/span>\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E6%B1%82%E5%92%8C\"><\/span>\u7b2c1\u5173\uff1a\u6c42\u548c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\n\n\/\/\u7f16\u5199\u51fd\u6570\n\/*********Begin*********\/\n\nint sum(int n){\n    int s=0;\n    int i;\n    for(i=1;i&lt;=n;i++){\n        s+=i;\n    }\n    return s;\n}\n\n\/*********End**********\/ \nint main(void)\n{  \n    \/*********Begin*********\/\n    int x;\n    scanf(\"%d\",&amp;x);\n    printf(\"%d\",sum(x));\n    \/*********End**********\/ \n    return 0;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E5%9B%9E%E6%96%87%E6%95%B0%E8%AE%A1%E7%AE%97\"><\/span>\u7b2c2\u5173\uff1a\u56de\u6587\u6570\u8ba1\u7b97<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\nvoid solve(){\n    \/*********Begin*********\/\n    int i;\n    for(i=200;i&lt;=3000;i++){\n        if(i&lt;1000){\n            if(i\/100==i%10){\n                printf(\"%d\\n\",i);\n            }\n        }else{\n            if((i\/1000==i%10)&amp;&amp;((i%100\/10)==(i\/100%10))){\n                printf(\"%d\\n\",i);\n            }\n        }\n    }\n    \/*********End**********\/ \n}\nint main(void)\n{  \n    solve();\n    return 0;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A_%E7%BC%96%E5%86%99%E5%87%BD%E6%95%B0%E6%B1%82%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%80%BC\"><\/span>\u7b2c3\u5173\uff1a&nbsp;\u7f16\u5199\u51fd\u6570\u6c42\u8868\u8fbe\u5f0f\u7684\u503c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\n\ndouble QH(int n) {\n    double s = 0;\n    double k = 1;\n    double m = 1;\n\n    for (int i = 1; i &lt;= n; i++) {\n        k*= i;\n        m*= (2 * i + 1);\n        s += k\/m;\n    }\n    return s+1;\n}\n\nint main(void)\n{\n    int n;\n    scanf(\"%d\", &amp;n);\n    printf(\"%.10lf\\n\", QH(n));\n    return 0;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC4%E5%85%B3%EF%BC%9A%E9%98%B6%E4%B9%98%E6%95%B0%E5%88%97\"><\/span>\u7b2c4\u5173\uff1a\u9636\u4e58\u6570\u5217<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\n\/\/\u7f16\u5199\u51fd\u6570\n\/*********Begin*********\/\n\n\/*********End**********\/ \nint main()\n{\n    int a,b,x;\n    scanf(\"%d\",&amp;x);\n    long long jiecheng=1, sum=0;\n    for (a=1;a&lt;=x;a++) \n    {\n        for (b = 1;b &lt;= a;b++)\n        {\n            jiecheng*= b;\n        }\n        sum+=jiecheng;\n        jiecheng = 1;\n    }\n    printf(\"%lld\",sum);\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC5%E5%85%B3%EF%BC%9A%E4%BA%B2%E5%AF%86%E6%95%B0\"><\/span>\u7b2c5\u5173\uff1a\u4eb2\u5bc6\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\nint main()\n{\n    int a, i, b, n;\n    for (a = 1; a &lt; 3000; a++)\n    {\n        for (b = 0, i = 1; i &lt;= a \/ 2; i++ )\n        {\n            if(! (a % i)) \n                b += i; \n        }\n        for (n = 0, i = 1; i &lt;= b\/2; i++)\n        {\n            if(! (b % i)) \n                n += i;\n        }\n        if(n == a &amp;&amp; a &lt; b)\n            printf(\"(%d,%d)\", a, b); \n    }\n    return 0;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC6%E5%85%B3%EF%BC%9A%E5%85%AC%E7%BA%A6%E5%85%AC%E5%80%8D%E6%95%B0\"><\/span>\u7b2c6\u5173\uff1a\u516c\u7ea6\u516c\u500d\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>\n#include&lt;stdio.h&gt;\nint main()\n{\n    long x, y, z, m, n;\n    scanf(\"%ld%ld\", &amp;x, &amp;y);\n    m = x, n = y;\nif(x&gt;0&amp;&amp;y&gt;0)\n{\n    while (y != 0)\n    {\n        z = x%y;\n        x = y;\n        y = z;\n    }\n    printf(\"%ld \", x);\n    printf(\"%ld\", m*n \/ x);}\n    else\n    printf(\"Input Error\");\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%83%A8%E5%88%86_%E6%8C%87%E9%92%88%EF%BC%88%E4%B8%80%EF%BC%89\"><\/span>\u7a0b\u5e8f\u8bbe\u8ba1\u90e8\u5206 \u6307\u9488\uff08\u4e00\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E7%9A%84%E4%BD%BF%E7%94%A8\"><\/span>\u7b2c1\u5173\uff1a\u6307\u9488\u7684\u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid Max(int *a, int *b, int *c)\n{\n    \/**********   Begin   **********\/\n    \/\/ \u6bd4\u8f83a\u548cb\u7684\u503c\uff0c\u5982\u679ca\u5927\u4e8eb\uff0c\u5219\u4ea4\u6362\u5b83\u4eec\u7684\u503c\n    if (*a &gt; *b) {\n        int temp = *a;\n        *a = *b;\n        *b = temp;\n    }\n    \/\/ \u6bd4\u8f83a\u548cc\u7684\u503c\uff0c\u5982\u679ca\u5927\u4e8ec\uff0c\u5219\u4ea4\u6362\u5b83\u4eec\u7684\u503c\n    if (*a &gt; *c) {\n        int temp = *a;\n        *a = *c;\n        *c = temp;\n    }\n    \/\/ \u6bd4\u8f83b\u548cc\u7684\u503c\uff0c\u5982\u679cb\u5927\u4e8ec\uff0c\u5219\u4ea4\u6362\u5b83\u4eec\u7684\u503c\n    if (*b &gt; *c) {\n        int temp = *b;\n        *b = *c;\n        *c = temp;\n    }\n    \/**********   End   **********\/\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E8%BF%90%E7%AE%97\"><\/span>\u7b2c2\u5173\uff1a\u6307\u9488\u8fd0\u7b97<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\nvoid Reverse(int *start,int *end)\n{\n\t\/**********   Begin   **********\/\n\n    while (start &lt; end) \/\/ \u5f53start\u6307\u9488\u5c0f\u4e8eend\u6307\u9488\u65f6\u7ee7\u7eed\u4ea4\u6362\n    {\n        \/\/ \u4ea4\u6362start\u548cend\u6307\u5411\u7684\u503c\n        int temp = *start;\n        *start = *end;\n        *end = temp;\n\n        \/\/ \u79fb\u52a8\u6307\u9488\n        start++; \/\/ start\u6307\u9488\u5411\u53f3\u79fb\u52a8\n        end--;   \/\/ end\u6307\u9488\u5411\u5de6\u79fb\u52a8\n    }\n\n\t\/**********   End   **********\/\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%B8%8E%E6%95%B0%E7%BB%84\"><\/span>\u7b2c3\u5173\uff1a\u6307\u9488\u4e0e\u6570\u7ec4<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid Split(int *arr,int len)\n{\n\t\/**********   Begin   **********\/\n    int left = 0; \/\/ \u7528\u4e8e\u8bb0\u5f550\u5e94\u8be5\u653e\u7f6e\u7684\u4f4d\u7f6e\n    for (int i = 0; i &lt; len; i++) \/\/ \u904d\u5386\u6570\u7ec4\n    {\n        if (arr&#91;i] == 0) \/\/ \u5982\u679c\u5f53\u524d\u5143\u7d20\u662f0\n        {\n            \/\/ \u4ea4\u6362arr&#91;i]\u548carr&#91;left]\u7684\u503c\n            int temp = arr&#91;i];\n            arr&#91;i] = arr&#91;left];\n            arr&#91;left] = temp;\n            left++; \/\/ \u79fb\u52a8left\u6307\u9488\n        }\n    }\n\t\/**********   End   **********\/\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%83%A8%E5%88%86_%E6%8C%87%E9%92%88%EF%BC%88%E4%BA%8C%EF%BC%89\"><\/span>\u7a0b\u5e8f\u8bbe\u8ba1\u90e8\u5206 \u6307\u9488\uff08\u4e8c\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%8E%E6%8C%87%E9%92%88\"><\/span><br>\u7b2c1\u5173\uff1a\u5b57\u7b26\u4e32\u4e0e\u6307\u9488<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\n#include&lt;bits\/stdc++.h&gt;\nusing namespace std;\nvoid Shift(char *str,int k);\nchar m&#91;100];\nint len=0;\n\nvoid Shift(char *str, int k) {\n    int len = strlen(str); \n    if (len == 0) return; \n    k = k % len;\n    char temp&#91;len + 1];\n    strcpy(temp, str + k);\n    strcpy(temp + len - k, str); \n    temp&#91;len] = '\\0'; \n    cout &lt;&lt; temp &lt;&lt; endl;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%B8%8E%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84\"><\/span>\u7b2c2\u5173\uff1a\u6307\u9488\u4e0e\u4e8c\u7ef4\u6570\u7ec4<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid Add()\n{\n    \/**********   Begin   **********\/\n    int rows, cols;\n    cin &gt;&gt; rows &gt;&gt; cols; \/\/ \u8bfb\u53d6\u77e9\u9635\u7684\u884c\u6570\u548c\u5217\u6570\n\n    int matrix1&#91;rows]&#91;cols];\n    int matrix2&#91;rows]&#91;cols];\n    int result&#91;rows]&#91;cols];\n\n    \/\/ \u8bfb\u53d6\u7b2c\u4e00\u4e2a\u77e9\u9635\u7684\u5185\u5bb9\n    for (int i = 0; i &lt; rows; i++) {\n        for (int j = 0; j &lt; cols; j++) {\n            cin &gt;&gt; matrix1&#91;i]&#91;j];\n        }\n    }\n\n    \/\/ \u8bfb\u53d6\u7b2c\u4e8c\u4e2a\u77e9\u9635\u7684\u5185\u5bb9\n    for (int i = 0; i &lt; rows; i++) {\n        for (int j = 0; j &lt; cols; j++) {\n            cin &gt;&gt; matrix2&#91;i]&#91;j];\n        }\n    }\n\n    \/\/ \u4f7f\u7528\u6307\u9488\u904d\u5386\u4e24\u4e2a\u77e9\u9635\u5e76\u9010\u5143\u7d20\u76f8\u52a0\n    int *p1 = &amp;matrix1&#91;0]&#91;0];\n    int *p2 = &amp;matrix2&#91;0]&#91;0];\n    int *pResult = &amp;result&#91;0]&#91;0];\n\n    for (int i = 0; i &lt; rows * cols; i++) {\n        *pResult = *p1 + *p2; \/\/ \u8ba1\u7b97\u5bf9\u5e94\u5143\u7d20\u7684\u548c\n        p1++; \/\/ \u79fb\u52a8\u6307\u9488\u5230\u4e0b\u4e00\u4e2a\u5143\u7d20\n        p2++;\n        pResult++;\n    }\n\n    \/\/ \u8f93\u51fa\u7ed3\u679c\u77e9\u9635\n    for (int i = 0; i &lt; rows; i++) {\n        for (int j = 0; j &lt; cols; j++) {\n            cout &lt;&lt; result&#91;i]&#91;j] &lt;&lt; \" \";\n        }\n        cout &lt;&lt; endl;\n    }\n    \/**********   End   **********\/\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%83%A8%E5%88%86_%E6%8C%87%E9%92%88%EF%BC%88%E4%B8%89%EF%BC%89\"><\/span>\u7a0b\u5e8f\u8bbe\u8ba1\u90e8\u5206 \u6307\u9488\uff08\u4e09\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0\"><\/span>\u7b2c1\u5173\uff1a\u6307\u9488\u4f5c\u4e3a\u51fd\u6570\u53c2\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\nvoid Sum(const int *arr,int len)\n{\n\/**********   Begin   **********\/\n    if (len == 0) {\n        cout &lt;&lt; 0 &lt;&lt; endl; \/\/ \u5982\u679c\u6570\u7ec4\u957f\u5ea6\u4e3a0\uff0c\u76f4\u63a5\u8f93\u51fa0\n        return;\n    }\n\n    int max_value = arr&#91;0]; \/\/ \u5047\u8bbe\u7b2c\u4e00\u4e2a\u5143\u7d20\u662f\u6700\u5927\u503c\n    int sum = 0; \/\/ \u521d\u59cb\u5316\u603b\u548c\u4e3a0\n\n    \/\/ \u904d\u5386\u6570\u7ec4\uff0c\u627e\u5230\u6700\u5927\u503c\n    for (int i = 0; i &lt; len; i++) {\n        if (arr&#91;i] &gt; max_value) {\n            max_value = arr&#91;i];\n        }\n    }\n\n    \/\/ \u904d\u5386\u6570\u7ec4\uff0c\u7d2f\u52a0\u6240\u6709\u5143\u7d20\u7684\u503c\uff0c\u4f46\u6392\u9664\u6700\u5927\u503c\n    for (int i = 0; i &lt; len; i++) {\n        if (arr&#91;i] != max_value) {\n            sum += arr&#91;i];\n        }\n    }\n\n    \/\/ \u8f93\u51fa\u7ed3\u679c\n    cout &lt;&lt; sum &lt;&lt; endl;\n    \/**********   End   **********\/\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E6%8C%87%E9%92%88%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E5%80%BC\"><\/span>\u7b2c2\u5173\uff1a\u6307\u9488\u4f5c\u4e3a\u51fd\u6570\u8fd4\u56de\u503c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream&gt;\nusing namespace std;\n\/**********   Begin   **********\/\n\n\nint* Read(int *len)\n{\n    \/\/ \u8bfb\u53d6\u6570\u7ec4\u957f\u5ea6\n    cin &gt;&gt; *len;\n\n    \/\/ \u52a8\u6001\u5206\u914d\u6570\u7ec4\n    int *arr = new int&#91;*len];\n\n    \/\/ \u8bfb\u53d6\u6570\u7ec4\u5185\u5bb9\n    for (int i = 0; i &lt; *len; i++) {\n        cin &gt;&gt; arr&#91;i];\n    }\n\n    \/\/ \u8fd4\u56de\u6570\u7ec4\u6307\u9488\n    return arr;\n}\n\/**********   End   **********\/<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Linux%E4%B9%8BC%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8\"><\/span>Linux\u4e4bC\u7f16\u7a0b\u5165\u95e8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E7%AC%AC%E4%B8%80%E4%B8%AAC%E7%A8%8B%E5%BA%8F\"><\/span>\u7b2c1\u5173\uff1a\u7b2c\u4e00\u4e2aC\u7a0b\u5e8f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<a href=\"https:\/\/img10.360buyimg.com\/ddimg\/jfs\/t1\/283084\/34\/27976\/13446\/68101821F823f9a24\/3225c48f7e895e52.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img10.360buyimg.com\/ddimg\/jfs\/t1\/283084\/34\/27976\/13446\/68101821F823f9a24\/3225c48f7e895e52.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<a href=\"https:\/\/img11.360buyimg.com\/ddimg\/jfs\/t1\/294099\/14\/627\/15117\/68101904F283b0113\/ed8e110f734371c0.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img11.360buyimg.com\/ddimg\/jfs\/t1\/294099\/14\/627\/15117\/68101904F283b0113\/ed8e110f734371c0.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<a href=\"https:\/\/img11.360buyimg.com\/ddimg\/jfs\/t1\/298715\/36\/1020\/16635\/68101e22Fa60bbe75\/2dd4062e6405c24d.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img11.360buyimg.com\/ddimg\/jfs\/t1\/298715\/36\/1020\/16635\/68101e22Fa60bbe75\/2dd4062e6405c24d.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9ALinux%E7%BC%96%E8%AF%91C%E7%A8%8B%E5%BA%8F\"><\/span>\u7b2c2\u5173\uff1aLinux\u7f16\u8bd1C\u7a0b\u5e8f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<a href=\"https:\/\/img12.360buyimg.com\/ddimg\/jfs\/t1\/290217\/40\/1160\/13203\/68101bfeF3bf0db18\/b4747e0d99e84bba.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img12.360buyimg.com\/ddimg\/jfs\/t1\/290217\/40\/1160\/13203\/68101bfeF3bf0db18\/b4747e0d99e84bba.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<a href=\"https:\/\/img13.360buyimg.com\/ddimg\/jfs\/t1\/236990\/20\/36307\/15808\/68101cd1Ff6dbd6d7\/7a3a3f5d769d2361.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img13.360buyimg.com\/ddimg\/jfs\/t1\/236990\/20\/36307\/15808\/68101cd1Ff6dbd6d7\/7a3a3f5d769d2361.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<a href=\"https:\/\/img13.360buyimg.com\/ddimg\/jfs\/t1\/287346\/36\/1228\/12075\/68101d01F085ae963\/1415f310fe18ef44.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img13.360buyimg.com\/ddimg\/jfs\/t1\/287346\/36\/1228\/12075\/68101d01F085ae963\/1415f310fe18ef44.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pintos%E7%9A%84%E7%BC%96%E8%AF%91%E3%80%81%E8%BF%90%E8%A1%8C%E5%92%8C%E8%B0%83%E8%AF%95\"><\/span>Pintos\u7684\u7f16\u8bd1\u3001\u8fd0\u884c\u548c\u8c03\u8bd5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83%E4%BD%93%E9%AA%8C\"><\/span>\u7b2c1\u5173\uff1a\u5b9e\u9a8c\u73af\u5883\u4f53\u9a8c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<a href=\"https:\/\/img12.360buyimg.com\/ddimg\/jfs\/t1\/281984\/39\/27133\/20513\/68101f09Fadc2122b\/e99d34f840ba700d.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img12.360buyimg.com\/ddimg\/jfs\/t1\/281984\/39\/27133\/20513\/68101f09Fadc2122b\/e99d34f840ba700d.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<a href=\"https:\/\/img13.360buyimg.com\/ddimg\/jfs\/t1\/274349\/40\/29053\/9919\/68101fb4F8544fafa\/2e9189fd441b09e9.jpg\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" src=\"https:\/\/img13.360buyimg.com\/ddimg\/jfs\/t1\/274349\/40\/29053\/9919\/68101fb4F8544fafa\/2e9189fd441b09e9.jpg\" alt=\"\u70b9\u51fb\u6253\u5f00\u56fe\u7247\">\n<\/a>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Linux%E4%B9%8B%E7%BA%BF%E7%A8%8B%E7%AE%A1%E7%90%86\"><\/span><strong>Linux\u4e4b\u7ebf\u7a0b\u7ba1\u7406<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E5%88%9B%E5%BB%BA%E7%BA%BF%E7%A8%8B\"><\/span>\u7b2c1\u5173\uff1a\u521b\u5efa\u7ebf\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n\n\/************************\n * \u53c2\u6570start_routine: \u51fd\u6570\u6307\u9488\uff0c\u7528\u4e8e\u6307\u5411\u7ebf\u7a0b\u51fd\u6570\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n * \u8fd4\u56de\u503c: \u8fd4\u56de\u7ebf\u7a0bID\n*************************\/\npthread_t createThread(void *(*start_routine) (void *), void *arg)\n{\n    pthread_t thread;\n    \/********** BEGIN **********\/\n    int ret = pthread_create(&amp;thread, NULL, start_routine, arg);\n    if (ret != 0)\n    {\n        printf(\"\u521b\u5efa\u7ebf\u7a0b\u5931\u8d25\\n\");\n        return (pthread_t)-1; \/\/ \u8fd4\u56de\u4e00\u4e2a\u65e0\u6548\u7684\u7ebf\u7a0bID\u8868\u793a\u5931\u8d25\n    }\n    \/********** END **********\/\n\n    return thread;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E7%BA%BF%E7%A8%8B%E6%8C%82%E8%B5%B7\"><\/span>\u7b2c2\u5173\uff1a\u7ebf\u7a0b\u6302\u8d77<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n\n\/************************\n * \u53c2\u6570thread: \u9700\u8981\u7b49\u5f85\u7ed3\u675f\u7684\u7ebf\u7a0bID\u53f7\n * \u8fd4\u56de\u503c: \u7b49\u5f85\u6210\u529f\u8fd4\u56de0\uff0c\u5931\u8d25\u8fd4\u56de-1\n * \u63d0\u793a: \u5ffd\u7565\u7ebf\u7a0b\u8fd4\u56de\u503c\n*************************\/\nint waitThread(pthread_t thread)\n{\n    int ret = -1;\n    \/********** BEGIN **********\/\n    ret = pthread_join(thread, NULL); \/\/ \u7b49\u5f85\u6307\u5b9a\u7ebf\u7a0b\u7ed3\u675f\uff0c\u5ffd\u7565\u8fd4\u56de\u503c\n    \/********** END **********\/\n\n    return ret;\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E7%BA%BF%E7%A8%8B%E7%BB%88%E6%AD%A2\"><\/span>\u7b2c3\u5173\uff1a\u7ebf\u7a0b\u7ec8\u6b62<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n\n\/************************\n * \u53c2\u6570thread: \u9700\u8981\u88ab\u53d6\u6d88\u7684\u7ebf\u7a0bID\u53f7\n * \u8fd4\u56de\u503c: \u6210\u529f\u8fd4\u56de0\uff0c\u5931\u8d25\u8fd4\u56de-1\n*************************\/\nint cancelThread(pthread_t thread)\n{\n    int ret = -1;\n    \/********** BEGIN **********\/\n    ret = pthread_cancel(thread); \/\/ \u5c1d\u8bd5\u53d6\u6d88\u6307\u5b9a\u7684\u7ebf\u7a0b\n    \/********** END **********\/\n\n    return ret;\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Linux%E4%B9%8B%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5%E4%B8%80\"><\/span>Linux\u4e4b\u7ebf\u7a0b\u540c\u6b65\u4e00<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E4%BA%92%E6%96%A5%E9%94%81\"><\/span>\u7b2c1\u5173\uff1a\u4e92\u65a5\u9501<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n#include &lt;unistd.h&gt;\n\n\/\/\u5168\u5c40\u4e92\u65a5\u9501\u53d8\u91cf\nextern pthread_mutex_t mutex;\n\n\/\/\u5168\u5c40\u5171\u4eab\u53d8\u91cf\nextern char *buffer&#91;3];\nextern int position;\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ThreadHandler(void *arg)\n{\n\t\/********** BEGIN **********\/\n\t\/\/ \u5728\u4fee\u6539\u5168\u5c40\u53d8\u91cf\u4e4b\u524d\u52a0\u9501\n\tpthread_mutex_lock(&amp;mutex);\n\t\/********** END **********\/\n\n\tbuffer&#91;position] = (char *)arg;\n\tsleep(1);\n\tposition++;\n\n\t\/********** BEGIN **********\/\n\t\/\/ \u4fee\u6539\u5b8c\u6210\u540e\u89e3\u9501\n\tpthread_mutex_unlock(&amp;mutex);\n\t\/********** END **********\/\n\n\tpthread_exit(NULL);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%87%AA%E6%97%8B%E9%94%81\"><\/span>\u7b2c2\u5173\uff1a\u81ea\u65cb\u9501<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n#include &lt;unistd.h&gt;\n\n\/\/\u5168\u5c40\u81ea\u65cb\u9501\u53d8\u91cf\nextern pthread_spinlock_t lock;\n\n\/\/\u5168\u5c40\u5171\u4eab\u53d8\u91cf\nextern char *buffer&#91;3];\nextern int position;\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ThreadHandler(void *arg)\n{\n\t\/********** BEGIN **********\/\n\t\/\/ \u5728\u4fee\u6539\u5168\u5c40\u53d8\u91cf\u4e4b\u524d\u52a0\u9501\n    pthread_spin_lock(&amp;lock);\n\t\/********** END **********\/\n\n\tbuffer&#91;position] = (char *)arg;\n\tsleep(1);\n\tposition++;\n\n\t\/********** BEGIN **********\/\n\t\/\/ \u4fee\u6539\u5b8c\u6210\u540e\u89e3\u9501\n    pthread_spin_unlock(&amp;lock);\n\t\/********** END **********\/\n\n\tpthread_exit(NULL);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E6%9D%A1%E4%BB%B6%E5%8F%98%E9%87%8F\"><\/span>\u7b2c3\u5173\uff1a\u6761\u4ef6\u53d8\u91cf<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n#include &lt;unistd.h&gt;\n\n\/\/\u5168\u5c40\u4e92\u65a5\u9501\u53d8\u91cf\u548c\u6761\u4ef6\u53d8\u91cf\nextern pthread_mutex_t mutex;\nextern pthread_cond_t cond;\n\n\/\/\u5168\u5c40\u5171\u4eab\u53d8\u91cf\nextern char *buffer&#91;3];\nextern int position;\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ThreadHandler1(void *arg)\n{\n    int i;\n    for(i = 0; i &lt; 3; i++)\n    {\n        usleep(500);\n        position++;\n        \/\/ \u901a\u77e5ThreadHandler2\u51fd\u6570\u6267\u884c\u8d4b\u503c\u64cd\u4f5c\n        \/********** BEGIN **********\/\n        pthread_cond_signal(&amp;cond); \/\/ \u901a\u77e5\u4e00\u4e2a\u7b49\u5f85\u7684\u7ebf\u7a0b\n        \/********** END **********\/\n    }\n\n    pthread_exit(NULL);\n}\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ThreadHandler2(void *arg)\n{\n    \/********** BEGIN **********\/\n    pthread_mutex_lock(&amp;mutex); \/\/ \u52a0\u9501\n    pthread_cond_wait(&amp;cond, &amp;mutex); \/\/ \u7b49\u5f85\u6761\u4ef6\u53d8\u91cf\u88ab\u89e6\u53d1\n    \/********** END **********\/\n\n    buffer&#91;position] = (char *)arg;\n\n    \/********** BEGIN **********\/\n    pthread_mutex_unlock(&amp;mutex); \/\/ \u89e3\u9501\n    \/********** END **********\/\n\n    pthread_exit(NULL);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC4%E5%85%B3%EF%BC%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98\"><\/span>\u7b2c4\u5173\uff1a\u9879\u76ee\u5b9e\u6218<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n#include &lt;unistd.h&gt;\n\nstruct Data\n{\n    int number;    \/\/\u5b58\u653e\u751f\u4ea7\u7684\u6570\u636e\n    struct Data *next;\n};\n\n\/\/\u5b9a\u4e49\u6570\u636e\u533a\u5934\u548c\u5c3e\nextern struct Data *beginData;    \n\n\/\/\u5168\u5c40\u4e92\u65a5\u9501\u53d8\u91cf\u548c\u6761\u4ef6\u53d8\u91cf\nextern pthread_mutex_t mutex;\nextern pthread_cond_t cond;\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *Consumer(void *arg)\n{\n    while(1)\n    {\n        \/********** BEGIN **********\/\n        pthread_mutex_lock(&amp;mutex); \/\/ \u52a0\u9501\n\n        \/\/ \u7b49\u5f85\u6570\u636e\u533a\u6709\u6570\u636e\n        while (beginData == NULL)\n        {\n            pthread_cond_wait(&amp;cond, &amp;mutex); \/\/ \u7b49\u5f85\u6761\u4ef6\u53d8\u91cf\n        }\n\n        \/\/ \u6d88\u8d39\u6570\u636e\n        if (beginData-&gt;number == -1)\n        {\n            pthread_mutex_unlock(&amp;mutex); \/\/ \u89e3\u9501\n            pthread_exit(NULL); \/\/ \u9000\u51fa\u7ebf\u7a0b\n        }\n\n        printf(\"%d\\n\", beginData-&gt;number); \/\/ \u6253\u5370\u6570\u636e\n\n        \/\/ \u4ece\u94fe\u8868\u4e2d\u5220\u9664\u6570\u636e\n        struct Data *tmp = beginData;\n        beginData = beginData-&gt;next;\n        free(tmp); \/\/ \u91ca\u653e\u5185\u5b58\n\n        pthread_mutex_unlock(&amp;mutex); \/\/ \u89e3\u9501\n        \/********** END **********\/\n    }\n    \n    pthread_exit(NULL);\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Linux%E4%B9%8B%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5%E4%BA%8C\"><\/span>Linux\u4e4b\u7ebf\u7a0b\u540c\u6b65\u4e8c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E4%BF%A1%E5%8F%B7%E9%87%8F\"><\/span>\u7b2c1\u5173\uff1a\u4fe1\u53f7\u91cf<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;semaphore.h&gt;\n\n\/\/\u5168\u5c40\u4fe1\u53f7\u91cf  sem1\u5df2\u88ab\u521d\u59cb\u5316\u4e3a1\uff0csem2\u88ab\u521d\u59cb\u5316\u4e3a0\nextern sem_t sem1, sem2;\n\n\/\/\u5168\u5c40\u5171\u4eab\u53d8\u91cf\nextern char *ch;\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ThreadHandler1(void *arg)\n{\n    int i = 0;\n    for(i = 0; i &lt; 3; i++)\n    {\n        \/********** BEGIN **********\/\n        sem_wait(&amp;sem1); \/\/ \u7b49\u5f85\u4fe1\u53f7\u91cfsem1\n        \/********** END **********\/\n        \n        printf(\"%c\", *ch);\n        usleep(100);\n        ch++;\n        \n        \/********** BEGIN **********\/\n        sem_post(&amp;sem2); \/\/ \u91ca\u653e\u4fe1\u53f7\u91cfsem2\uff0c\u8ba9\u7ebf\u7a0b2\u8fd0\u884c\n        \/********** END **********\/\n    }\n    \n    pthread_exit(NULL);\n}\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ThreadHandler2(void *arg)\n{\n    int i = 0;\n    for(i = 0; i &lt; 3; i++)\n    {\n        \/********** BEGIN **********\/\n        sem_wait(&amp;sem2); \/\/ \u7b49\u5f85\u4fe1\u53f7\u91cfsem2\n        \/********** END **********\/\n        \n        printf(\"%c\", *ch);\n        ch++;\n        \n        \/********** BEGIN **********\/\n        sem_post(&amp;sem1); \/\/ \u91ca\u653e\u4fe1\u53f7\u91cfsem1\uff0c\u8ba9\u7ebf\u7a0b1\u8fd0\u884c\n        \/********** END **********\/\n    }\n    \n    pthread_exit(NULL);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E8%AF%BB%E5%86%99%E9%94%81\"><\/span>\u7b2c2\u5173\uff1a\u8bfb\u5199\u9501<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n\n\/\/\u5168\u5c40\u8bfb\u5199\u9501\nextern pthread_rwlock_t rwlock;\n\n\/\/\u5168\u5c40\u5171\u4eab\u53d8\u91cf\nextern char buffer&#91;3];\nextern int position;\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *ReadHandler(void *arg)\n{\n    int i;\n    for(i = 0; i &lt; 3; i++)\n    {\n        \/********** BEGIN **********\/\n        pthread_rwlock_rdlock(&amp;rwlock); \/\/ \u52a0\u8bfb\u9501\n        \/********** END **********\/\n        \n        printf(\"%c\\n\", buffer&#91;i]);\n        \n        \/********** BEGIN **********\/\n        pthread_rwlock_unlock(&amp;rwlock); \/\/ \u89e3\u9501\n        \/********** END **********\/\n        \n        usleep(800);\n    }\n    \n    pthread_exit(NULL);\n}\n\n\/************************\n * \u53c2\u6570arg: \u662f\u7ebf\u7a0b\u51fd\u6570\u7684\u53c2\u6570\n*************************\/\nvoid *WriteHandler(void *arg)\n{\n    \/********** BEGIN **********\/\n    pthread_rwlock_wrlock(&amp;rwlock); \/\/ \u52a0\u5199\u9501\n    \/********** END **********\/\n    \n    buffer&#91;position] = *(char*)arg;\n    sleep(1);\n    position++;\n    \n    \/********** BEGIN **********\/\n    pthread_rwlock_unlock(&amp;rwlock); \/\/ \u89e3\u9501\n    \/********** END **********\/\n    \n    pthread_exit(NULL);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98\"><\/span>\u7b2c3\u5173\uff1a\u9879\u76ee\u5b9e\u6218<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;pthread.h&gt;\n#include &lt;semaphore.h&gt;\n\n\/\/\u8bb0\u5f55\u8bfb\u7ebf\u7a0b\u7684\u4e2a\u6570\nextern int reader;\n\n\/\/\u5168\u5c40\u7684\u4fe1\u53f7\u91cf\u53d8\u91cf\nextern sem_t sem_read, sem_write;\n\n\/\/\u8bfb\u5199\u9501\u521d\u59cb\u5316\u51fd\u6570\nvoid sem_rwlock_init()\n{\n\treader = 0;\n\t\/\/\u521d\u59cb\u5316\u4fe1\u53f7\u91cf\n\tsem_init(&amp;sem_read, 0, 1);\n\tsem_init(&amp;sem_write, 0, 1);\n}\n\n\/\/\u8bfb\u5199\u9501\u6ce8\u9500\u51fd\u6570\nvoid sem_rwlock_destroy()\n{\n\tsem_destroy(&amp;sem_read);\n\tsem_destroy(&amp;sem_write);\n}\n\n\/\/\u8bfb\u6a21\u5f0f\u4e0b\u7684\u52a0\u9501\u64cd\u4f5c\nvoid sem_rwlock_rdlock()\n{\n\t\/********** BEGIN **********\/\n\tsem_wait(&amp;sem_read); \/\/ \u7b49\u5f85\u8bfb\u4fe1\u53f7\u91cf\n\treader++; \/\/ \u589e\u52a0\u8bfb\u7ebf\u7a0b\u8ba1\u6570\n\tif (reader == 1) {\n\t\tsem_wait(&amp;sem_write); \/\/ \u5982\u679c\u662f\u7b2c\u4e00\u4e2a\u8bfb\u7ebf\u7a0b\uff0c\u9700\u8981\u7b49\u5f85\u5199\u4fe1\u53f7\u91cf\n\t}\n\tsem_post(&amp;sem_read); \/\/ \u91ca\u653e\u8bfb\u4fe1\u53f7\u91cf\uff0c\u5141\u8bb8\u5176\u4ed6\u8bfb\u7ebf\u7a0b\u8fdb\u5165\n\t\/********** END **********\/\n}\n\n\/\/\u8bfb\u6a21\u5f0f\u4e0b\u7684\u89e3\u9501\u64cd\u4f5c\nvoid sem_rwlock_unrdlock()\n{\n\t\/********** BEGIN **********\/\n\tsem_wait(&amp;sem_read); \/\/ \u7b49\u5f85\u8bfb\u4fe1\u53f7\u91cf\n\treader--; \/\/ \u51cf\u5c11\u8bfb\u7ebf\u7a0b\u8ba1\u6570\n\tif (reader == 0) {\n\t\tsem_post(&amp;sem_write); \/\/ \u5982\u679c\u662f\u6700\u540e\u4e00\u4e2a\u8bfb\u7ebf\u7a0b\uff0c\u91ca\u653e\u5199\u4fe1\u53f7\u91cf\n\t}\n\tsem_post(&amp;sem_read); \/\/ \u91ca\u653e\u8bfb\u4fe1\u53f7\u91cf\n\t\/********** END **********\/\n}\n\n\/\/\u5199\u6a21\u5f0f\u4e0b\u7684\u52a0\u9501\u64cd\u4f5c\nvoid sem_rwlock_wrlock()\n{\n\tsem_wait(&amp;sem_write);\n}\n\n\/\/\u5199\u6a21\u5f0f\u4e0b\u7684\u89e3\u9501\u64cd\u4f5c\nvoid sem_rwlock_unwrlock()\n{\n\tsem_post(&amp;sem_write);\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Pintos%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%EF%BC%9A%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8\"><\/span>Pintos\u57fa\u7840\u6570\u636e\u7ed3\u6784\uff1a\u901a\u7528\u94fe\u8868<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC1%E5%85%B3%EF%BC%9A%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8\"><\/span>\u7b2c1\u5173\uff1a\u901a\u7528\u94fe\u8868\u7684\u57fa\u672c\u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;stddef.h>\n#include &lt;stdbool.h>\ntypedef int tid_t;\ntypedef unsigned char uint8_t;\ntypedef void thread_action_func (struct thread *t, void *aux);\n\ntypedef bool list_less_func (const struct list_elem *a,\n                             const struct list_elem *b,\n                             void *aux);\n\n#define list_entry(LIST_ELEM, STRUCT, MEMBER)           \\\n        ((STRUCT *) ((uint8_t *) &amp;(LIST_ELEM)->next     \\\n                     - offsetof (STRUCT, MEMBER.next)))\n\nenum thread_status\n  {\n    THREAD_RUNNING,     \/* Running thread. *\/\n    THREAD_READY,       \/* Not running but ready to run. *\/\n    THREAD_BLOCKED,     \/* Waiting for an event to trigger. *\/\n    THREAD_DYING        \/* About to be destroyed. *\/\n  };\n\n\nstruct list_elem\n  {\n    struct list_elem *prev;     \/* Previous list element. *\/\n    struct list_elem *next;     \/* Next list element. *\/\n  };\n\n\nstruct list\n  {\n    struct list_elem head;      \/* List head. *\/\n    struct list_elem tail;      \/* List tail. *\/\n  };\n\nstruct list mylist;\n\n\/* Inserts ELEM just before BEFORE, which may be either an\n   interior element or a tail.  The latter case is equivalent to\n   list_push_back(). *\/\nvoid\nlist_insert (struct list_elem *before, struct list_elem *elem)\n{\n  elem->prev = before->prev;\n  elem->next = before;\n  before->prev->next = elem;\n  before->prev = elem;\n}\n\n\/* Returns the beginning of LIST.  *\/\nstruct list_elem *\nlist_begin (struct list *list)\n{\n  return list->head.next;\n}\n\n\/* Returns LIST's tail.\n\n   list_end() is often used in iterating through a list from\n   front to back.  See the big comment at the top of list.h for\n   an example. *\/\nstruct list_elem *\nlist_end (struct list *list)\n{\n  return &amp;list->tail;\n}\n\n\n\/* Returns the element after ELEM in its list.  If ELEM is the\n   last element in its list, returns the list tail.  Results are\n   undefined if ELEM is itself a list tail. *\/\nstruct list_elem *\nlist_next (struct list_elem *elem)\n{\n  return elem->next;\n}\n\n\n\/* Initializes LIST as an empty list. *\/\nvoid\nlist_init (struct list *list)\n{\n  list->head.prev = NULL;\n  list->head.next = &amp;list->tail;\n  list->tail.prev = &amp;list->head;\n  list->tail.next = NULL;\n}\n\n\n\/* Inserts ELEM at the end of LIST, so that it becomes the\n   back in LIST. *\/\nvoid\nlist_push_back (struct list *list, struct list_elem *elem)\n{\n  list_insert (list_end (list), elem);\n}\n\n\nstruct thread\n  {\n    \/* Owned by thread.c. *\/\n    tid_t tid;                          \/* Thread identifier. *\/\n    enum thread_status status;          \/* Thread state. *\/\n    char name&#91;16];                      \/* Name (for debugging purposes). *\/\n    uint8_t *stack;                     \/* Saved stack pointer. *\/\n    int priority;                       \/* Priority. *\/\n    struct list_elem allelem;           \/* List element for all threads list. *\/\n\n    \/* Shared between thread.c and synch.c. *\/\n    struct list_elem elem;              \/* List element. *\/\n    \/\/\u6b64\u5904\u4e3a\u540e\u6dfb\u52a0\u7684\u94fe\u8868\u5143\u7d20\n    struct list_elem myelem;              \/* List element. *\/\n\n    \/* Owned by thread.c. *\/\n    unsigned magic;                     \/* Detects stack overflow. *\/\n  };\n\n\n\n\/*\n\u521b\u5efa 5 \u4e2a thread \u7ed3\u6784\u4f53\uff0c\u4e3a\u6bcf\u4e2a\u7ed3\u6784\u4f53\u7684 tid \u5b57\u6bb5\u4f9d\u6b21\u8d4b\u503c\u4e3a\u7b2c\u4e8c\u4e2a\u53c2\u6570\u6570\u7ec4 mytid \u4e2d\u7684\u5bf9\u5e94\u6570\u503c\uff0c\u5e76\u4f9d\u6b21\u5c06\u5176\u63d2\u5165\u5230\u7b2c\u4e00\u4e2a\u53c2\u6570list \u4e2d\uff0c\u63d2\u5165\u8fc7\u7a0b\u4e2d\u8981\u6c42\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u5b57\u6bb5 myelem \u4f5c\u4e3a\u94fe\u8868\u5143\u7d20\u6302\u8f7d\u5230 list \u4e2d\u3002\n*\/\nvoid myinsert(struct list *list,tid_t mytid&#91;5])\n{\n    list_init(list);\n    for(int i=0;i&lt;5;i++)\n\t{\n\t    \/***begin \u8865\u5168\u4ee5\u4e0b\u4ee3\u7801***\/\n      struct thread *new_thread; \/\/ \u5b9a\u4e49\u4e00\u4e2a\u6307\u5411 thread \u7ed3\u6784\u4f53\u7684\u6307\u9488\n      new_thread = (struct thread *)malloc(sizeof(struct thread)); \/\/ \u4f7f\u7528 malloc \u5206\u914d\u5185\u5b58\n      if (new_thread == NULL) {\n          printf(\"Memory allocation failed\\n\");\n          exit(1); \/\/ \u5982\u679c\u5206\u914d\u5931\u8d25\uff0c\u9000\u51fa\u7a0b\u5e8f\n      }\n      new_thread->tid = mytid&#91;i]; \/\/ \u4e3a tid \u5b57\u6bb5\u8d4b\u503c\n      list_push_back(list, &amp;new_thread->myelem); \/\/ \u5c06\u65b0\u521b\u5efa\u7684 thread \u7ed3\u6784\u4f53\u7684 myelem \u5b57\u6bb5\u63d2\u5165\u5230\u94fe\u8868\u4e2d\n\t\t\/**end**\/\n\t}\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC2%E5%85%B3%EF%BC%9A%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8%E7%9A%84%E9%A6%96%E5%9C%B0%E5%9D%80%E8%AE%A1%E7%AE%97\"><\/span>\u7b2c2\u5173\uff1a\u901a\u7528\u94fe\u8868\u7684\u9996\u5730\u5740\u8ba1\u7b97<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code> #include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;stddef.h>\n#include &lt;stdbool.h>\ntypedef int tid_t;\ntypedef unsigned char uint8_t;\ntypedef void thread_action_func (struct thread *t, void *aux);\n\ntypedef bool list_less_func (const struct list_elem *a,\n                             const struct list_elem *b,\n                             void *aux);\n\n#define list_entry(LIST_ELEM, STRUCT, MEMBER)           \\\n        ((STRUCT *) ((uint8_t *) &amp;(LIST_ELEM)->next     \\\n                     - offsetof (STRUCT, MEMBER.next)))\n\nenum thread_status\n  {\n    THREAD_RUNNING,     \/* Running thread. *\/\n    THREAD_READY,       \/* Not running but ready to run. *\/\n    THREAD_BLOCKED,     \/* Waiting for an event to trigger. *\/\n    THREAD_DYING        \/* About to be destroyed. *\/\n  };\n\n\nstruct list_elem\n  {\n    struct list_elem *prev;     \/* Previous list element. *\/\n    struct list_elem *next;     \/* Next list element. *\/\n  };\n\n\nstruct list\n  {\n    struct list_elem head;      \/* List head. *\/\n    struct list_elem tail;      \/* List tail. *\/\n  };\n\nstruct list mylist;\n\n\/* Inserts ELEM just before BEFORE, which may be either an\n   interior element or a tail.  The latter case is equivalent to\n   list_push_back(). *\/\nvoid\nlist_insert (struct list_elem *before, struct list_elem *elem)\n{\n  elem->prev = before->prev;\n  elem->next = before;\n  before->prev->next = elem;\n  before->prev = elem;\n}\n\n\/* Returns the beginning of LIST.  *\/\nstruct list_elem *\nlist_begin (struct list *list)\n{\n  return list->head.next;\n}\n\n\/* Returns LIST's tail.\n\n   list_end() is often used in iterating through a list from\n   front to back.  See the big comment at the top of list.h for\n   an example. *\/\nstruct list_elem *\nlist_end (struct list *list)\n{\n  return &amp;list->tail;\n}\n\n\n\/* Returns the element after ELEM in its list.  If ELEM is the\n   last element in its list, returns the list tail.  Results are\n   undefined if ELEM is itself a list tail. *\/\nstruct list_elem *\nlist_next (struct list_elem *elem)\n{\n  return elem->next;\n}\n\n\n\/* Initializes LIST as an empty list. *\/\nvoid\nlist_init (struct list *list)\n{\n  list->head.prev = NULL;\n  list->head.next = &amp;list->tail;\n  list->tail.prev = &amp;list->head;\n  list->tail.next = NULL;\n}\n\n\n\/* Inserts ELEM at the end of LIST, so that it becomes the\n   back in LIST. *\/\nvoid\nlist_push_back (struct list *list, struct list_elem *elem)\n{\n  list_insert (list_end (list), elem);\n}\n\n\nstruct thread\n  {\n    \/* Owned by thread.c. *\/\n    tid_t tid;                          \/* Thread identifier. *\/\n    enum thread_status status;          \/* Thread state. *\/\n    char name&#91;16];                      \/* Name (for debugging purposes). *\/\n    uint8_t *stack;                     \/* Saved stack pointer. *\/\n    int priority;                       \/* Priority. *\/\n    struct list_elem allelem;           \/* List element for all threads list. *\/\n\n    \/* Shared between thread.c and synch.c. *\/\n    struct list_elem elem;              \/* List element. *\/\n    \/\/\u6b64\u5904\u4e3a\u540e\u6dfb\u52a0\u7684\u94fe\u8868\u5143\u7d20\n    struct list_elem myelem;              \/* List element. *\/\n\n    \/* Owned by thread.c. *\/\n    unsigned magic;                     \/* Detects stack overflow. *\/\n  };\n\n\nvoid\nthread_foreach(thread_action_func *func, void *aux)\n{\n  struct list_elem *e;\n\n  for (e = list_begin (&amp;mylist); e != list_end (&amp;mylist);\n       e = list_next (e))\n    {\n      struct thread *t ;\n      \/****   BEGIN  \u8865\u5168\u4ee5\u4e0b\u4ee3\u7801*****\/\n      \n      t = list_entry(e, struct thread, myelem);  \/\/ \u4f7f\u7528 list_entry \u5b8f\u83b7\u53d6 thread \u7ed3\u6784\u4f53\u7684\u9996\u5730\u5740\n\n      \/****   END  *****\/\n      func (t, aux);\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E7%AC%AC3%E5%85%B3%EF%BC%9A%E5%9F%BA%E4%BA%8E%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E7%9A%84%E9%80%9A%E7%94%A8%E9%93%BE%E8%A1%A8%E6%93%8D%E4%BD%9C\"><\/span>\u7b2c3\u5173\uff1a\u57fa\u4e8e\u51fd\u6570\u6307\u9488\u7684\u901a\u7528\u94fe\u8868\u64cd\u4f5c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;stddef.h>\n#include &lt;stdbool.h>\ntypedef int tid_t;\ntypedef unsigned char uint8_t;\ntypedef void thread_action_func (struct thread *t, void *aux);\n\ntypedef bool list_less_func (const struct list_elem *a,\n                             const struct list_elem *b,\n                             void *aux);\n\n#define list_entry(LIST_ELEM, STRUCT, MEMBER)           \\\n        ((STRUCT *) ((uint8_t *) &amp;(LIST_ELEM)->next     \\\n                     - offsetof (STRUCT, MEMBER.next)))\n\nenum thread_status\n  {\n    THREAD_RUNNING,     \/* Running thread. *\/\n    THREAD_READY,       \/* Not running but ready to run. *\/\n    THREAD_BLOCKED,     \/* Waiting for an event to trigger. *\/\n    THREAD_DYING        \/* About to be destroyed. *\/\n  };\n\n\nstruct list_elem\n  {\n    struct list_elem *prev;     \/* Previous list element. *\/\n    struct list_elem *next;     \/* Next list element. *\/\n  };\n\n\nstruct list\n  {\n    struct list_elem head;      \/* List head. *\/\n    struct list_elem tail;      \/* List tail. *\/\n  };\n\nstruct list mylist;\n\n\/* Inserts ELEM just before BEFORE, which may be either an\n   interior element or a tail.  The latter case is equivalent to\n   list_push_back(). *\/\nvoid\nlist_insert (struct list_elem *before, struct list_elem *elem)\n{\n  elem->prev = before->prev;\n  elem->next = before;\n  before->prev->next = elem;\n  before->prev = elem;\n}\n\n\/* Returns the beginning of LIST.  *\/\nstruct list_elem *\nlist_begin (struct list *list)\n{\n  return list->head.next;\n}\n\n\/* Returns LIST's tail.\n\n   list_end() is often used in iterating through a list from\n   front to back.  See the big comment at the top of list.h for\n   an example. *\/\nstruct list_elem *\nlist_end (struct list *list)\n{\n  return &amp;list->tail;\n}\n\n\n\/* Returns the element after ELEM in its list.  If ELEM is the\n   last element in its list, returns the list tail.  Results are\n   undefined if ELEM is itself a list tail. *\/\nstruct list_elem *\nlist_next (struct list_elem *elem)\n{\n  return elem->next;\n}\n\n\n\/* Initializes LIST as an empty list. *\/\nvoid\nlist_init (struct list *list)\n{\n  list->head.prev = NULL;\n  list->head.next = &amp;list->tail;\n  list->tail.prev = &amp;list->head;\n  list->tail.next = NULL;\n}\n\n\n\/* Inserts ELEM at the end of LIST, so that it becomes the\n   back in LIST. *\/\nvoid\nlist_push_back (struct list *list, struct list_elem *elem)\n{\n  list_insert (list_end (list), elem);\n}\n\n\n\/* Inserts ELEM in the proper position in LIST, which must be\n   sorted according to LESS given auxiliary data AUX.\n   Runs in O(n) average case in the number of elements in LIST. *\/\nvoid\nlist_insert_ordered (struct list *list, struct list_elem *elem,\n                     list_less_func *less, void *aux)\n{\n  struct list_elem *e;\n\n  for (e = list_begin (list); e != list_end (list); e = list_next (e))\n    if (less (elem, e, aux))\n      break;\n  return list_insert (e, elem);\n}\n\nstruct thread\n  {\n    \/* Owned by thread.c. *\/\n    tid_t tid;                          \/* Thread identifier. *\/\n    enum thread_status status;          \/* Thread state. *\/\n    char name&#91;16];                      \/* Name (for debugging purposes). *\/\n    uint8_t *stack;                     \/* Saved stack pointer. *\/\n    int priority;                       \/* Priority. *\/\n    struct list_elem allelem;           \/* List element for all threads list. *\/\n\n    \/* Shared between thread.c and synch.c. *\/\n    struct list_elem elem;              \/* List element. *\/\n    \/\/\u6b64\u5904\u4e3a\u540e\u6dfb\u52a0\u7684\u94fe\u8868\u5143\u7d20\n    struct list_elem myelem;              \/* List element. *\/\n\n    \/* Owned by thread.c. *\/\n    unsigned magic;                     \/* Detects stack overflow. *\/\n  };\n\n\/* \u81ea\u5b9a\u4e49\u6bd4\u8f83\u51fd\u6570 *\/\nbool\nmycompare(const struct list_elem *a, const struct list_elem *b, void *aux)\n{\n    \/***begin  \u8865\u5168\u4ee5\u4e0b\u4ee3\u7801***\/\n    struct thread *ta = list_entry(a, struct thread, myelem);\n    struct thread *tb = list_entry(b, struct thread, myelem);\n    return ta->tid &lt; tb->tid;\n    \/***end***\/\n}\n\n\/*\n\u521b\u5efa 5 \u4e2a tcb \u7ed3\u6784\u4f53\uff0c\u4e3a\u6bcf\u4e2a\u7ed3\u6784\u4f53\u7684 tid \u5b57\u6bb5\u8d4b\u503c\u4e3a\u7b2c\u4e8c\u4e2a\u53c2\u6570\u6570\u7ec4 mytid \u4e2d\u7684\u6570\u503c\uff0c\u5e76\u3010\u6309\u5e8f\u3011\u5c06\u5176\u63d2\u5165\u5230\u7b2c\u4e00\u4e2a\u53c2\u6570list \u4e2d\uff0c\u63d2\u5165\u8fc7\u7a0b\u4e2d\u8981\u6c42\u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u5b57\u6bb5 myelem \u4f5c\u4e3a\u94fe\u8868\u5143\u7d20\u6302\u8f7d\u5230 list \u4e2d\u3002\n*\/\nvoid myinsert(struct list *list,tid_t mytid&#91;5])\n{\n    list_init(list);\n    for(int i=0;i&lt;5;i++)\n    {\n        \/***begin \u8865\u5168\u4ee5\u4e0b\u4ee3\u7801***\/\n        struct thread *t = malloc(sizeof(struct thread));\n        t->tid = mytid&#91;i];\n        list_insert_ordered(list, &amp;t->myelem, mycompare, NULL);\n        \/***end***\/\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Linux\u8fdb\u7a0b\u7ba1\u7406\u4e4b\u4e00\uff08\u5c5e\u6027\u83b7\u53d6\uff0cfork\u3001exi &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"_links":{"self":[{"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/posts\/688"}],"collection":[{"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/comments?post=688"}],"version-history":[{"count":29,"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/posts\/688\/revisions"}],"predecessor-version":[{"id":742,"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/posts\/688\/revisions\/742"}],"wp:attachment":[{"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/media?parent=688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/categories?post=688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sxr666.cn\/index.php\/wp-json\/wp\/v2\/tags?post=688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}