{"id":146,"date":"2026-03-24T13:33:36","date_gmt":"2026-03-24T05:33:36","guid":{"rendered":"https:\/\/codergodv.xyz\/?p=146"},"modified":"2026-03-24T13:33:36","modified_gmt":"2026-03-24T05:33:36","slug":"linux%e5%9f%ba%e7%a1%80io","status":"publish","type":"post","link":"https:\/\/codergodv.xyz\/index.php\/2026\/03\/24\/linux%e5%9f%ba%e7%a1%80io\/","title":{"rendered":"Linux\u57fa\u7840IO"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">C\u8bed\u8a00\u6587\u4ef6IO<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">C\u8bed\u8a00\u6587\u4ef6\u63a5\u53e3\u6c47\u603b<\/h3>\n\n\n\n<p>C\u8bed\u8a00\u4e2d\u7684\u6587\u4ef6\u64cd\u4f5c\u51fd\u6570\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">\u6587\u4ef6\u64cd\u4f5c\u51fd\u6570<\/th><th class=\"has-text-align-center\" data-align=\"center\">\u529f\u80fd<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">fopen<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u6253\u5f00\u6587\u4ef6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fclose<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5173\u95ed\u6587\u4ef6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fputc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5199\u5165\u4e00\u4e2a\u5b57\u7b26<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fgetc<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fputs<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5199\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fgets<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8bfb\u53d6\u4e00\u4e2a\u5b57\u7b26\u4e32<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fprintf<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u683c\u5f0f\u5316\u5199\u5165\u6570\u636e<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fscanf<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u683c\u5f0f\u5316\u8bfb\u53d6\u6570\u636e<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fwrite<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5411\u4e8c\u8fdb\u5236\u6587\u4ef6\u5199\u5165\u6570\u636e<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fread<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u4ece\u4e8c\u8fdb\u5236\u6587\u4ef6\u8bfb\u53d6\u6570\u636e<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">fseek<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8bbe\u7f6e\u6587\u4ef6\u6307\u9488\u7684\u4f4d\u7f6e<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">ftell<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8ba1\u7b97\u5f53\u524d\u6587\u4ef6\u6307\u9488\u76f8\u5bf9\u4e8e\u8d77\u59cb\u4f4d\u7f6e\u7684\u504f\u79fb\u91cf<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">rewind<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u8bbe\u7f6e\u6587\u4ef6\u6307\u9488\u5230\u6587\u4ef6\u7684\u8d77\u59cb\u4f4d\u7f6e<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">ferror<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5224\u65ad\u6587\u4ef6\u64cd\u4f5c\u8fc7\u7a0b\u4e2d\u662f\u5426\u53d1\u751f\u9519\u8bef<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">feof<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5224\u65ad\u6587\u4ef6\u6307\u9488\u662f\u5426\u8bfb\u53d6\u5230\u6587\u4ef6\u672b\u5c3e<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u4e0b\u9762\u53ea\u4f1a\u9009\u62e9\u6027\u5bf9C\u8bed\u8a00\u7684\u90e8\u5206\u6587\u4ef6\u64cd\u4f5c\u51fd\u6570\u8fdb\u884c\u4f7f\u7528\uff0c\u82e5\u60f3\u8be6\u7ec6\u4e86\u89e3\u5176\u4f59\u6587\u4ef6\u64cd\u4f5c\u51fd\u6570\u7684\u4f7f\u7528\u65b9\u6cd5\uff0c\u8bf7\u8df3\u8f6c\u5230\u535a\u4e3b\u7684\u5176\u5b83\u535a\u5ba2\uff1a<\/p>\n\n\n\n<p>\u4e00\u3001\u6587\u4ef6\u7684\u6253\u5f00\u4e0e\u5173\u95ed\u51fd\u6570\uff08fopen\u3001fclose\uff09<br>\u4e8c\u3001\u6587\u4ef6\u7684\u987a\u5e8f\u8bfb\u5199\uff08fgetc\u3001fputc\u3001fgets\u3001fputs\u3001fscanf\u3001fprintf\u3001fread\u3001fwrite\uff09<br>\u4e09\u3001\u6587\u4ef6\u7684\u968f\u673a\u8bfb\u5199\uff08fseek\u3001ftell\uff09<br>\u56db\u3001\u6587\u4ef6\u7684\u7ed3\u675f\u5224\u5b9a\uff08ferror\u3001feof\uff09<\/p>\n\n\n\n<p><strong>\u5bf9\u6587\u4ef6\u8fdb\u884c\u5199\u5165\u7684\u64cd\u4f5c\u5b9e\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int main()\n{\n    FILE* fp = fopen(\"log.txt\", \"w\");\n    if (!fp)\n    {\n        perror(\"fopen\");\n        return 1;\n    }\n    int count = 5;\n    while (count--)\n    {\n        fputs(\"hello world\\n\", fp);\n    }\n    fclose(fp);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7a0b\u5e8f\u540e\uff0c\u5728\u5f53\u524d\u8def\u5f84\u4e0b\u5c31\u4f1a\u751f\u6210\u5bf9\u5e94\u6587\u4ef6\uff0c\u6587\u4ef6\u5f53\u4e2d\u5c31\u662f\u6211\u4eec\u5199\u5165\u7684\u5185\u5bb9\u3002<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/20260324133213786.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/20260324133213786.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\"\/><\/div><\/figure>\n\n\n\n<p><strong>\u5bf9\u6587\u4ef6\u8fdb\u884c\u8bfb\u53d6\u64cd\u4f5c\u5b9e\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n\nint main()\n{\n    char ret&#91;64];\n    FILE* fp = fopen(\"log.txt\", \"r\");\n    if (!fp)\n    {\n        perror(\"fopen\");\n        return 1;\n    }\n    int count = 5;\n    while (count--)\n    {\n        fgets(ret, sizeof(ret), fp);\n        printf(\"%s\", ret);\n    }\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7a0b\u5e8f\u540e\uff0c\u5c31\u4f1a\u5c06\u6211\u4eec\u521a\u624d\u5199\u5165\u6587\u4ef6\u7684\u5185\u5bb9\u8bfb\u53d6\u51fa\u6765\uff0c\u5e76\u6253\u5370\u5728\u663e\u793a\u5668\u4e0a\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16698983867663.png\" alt=\"img\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4ec0\u4e48\u662f\u5f53\u524d\u8def\u5f84<\/h3>\n\n\n\n<p>\u6211\u4eec\u77e5\u9053\uff0c\u5f53fopen\u4ee5\u5199\u5165\u7684\u65b9\u5f0f\u6253\u5f00\u4e00\u4e2a\u6587\u4ef6\u65f6\uff0c\u82e5\u8be5\u6587\u4ef6\u4e0d\u5b58\u5728\uff0c\u5219\u4f1a\u81ea\u52a8\u5728\u5f53\u524d\u8def\u5f84\u521b\u5efa\u8be5\u6587\u4ef6\uff0c\u90a3\u4e48\u8fd9\u91cc\u6240\u8bf4\u7684\u5f53\u524d\u8def\u5f84\u6307\u7684\u662f\u4ec0\u4e48\u5462\uff1f<\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u6211\u4eec\u5728BasicIO\u76ee\u5f55\u4e0b\u8fd0\u884c\u53ef\u6267\u884c\u7a0b\u5e8fmyproc\uff0c\u90a3\u4e48\u8be5\u53ef\u6267\u884c\u7a0b\u5e8f\u521b\u5efa\u7684log.txt\u6587\u4ef6\u4f1a\u51fa\u73b0\u5728BasicIO\u76ee\u5f55\u4e0b\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16698984446256.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16698984446256.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u90a3\u662f\u5426\u610f\u5473\u7740\u8fd9\u91cc\u6240\u8bf4\u7684\u201c\u5f53\u524d\u8def\u5f84\u201d\u662f\u6307\u201c\u5f53\u524d\u53ef\u6267\u884c\u7a0b\u5e8f\u6240\u5904\u7684\u8def\u5f84\u201d\u5462\uff1f<br>\u8fd9\u65f6\u6211\u4eec\u53ef\u4ee5\u5c06\u521a\u624d\u53ef\u6267\u884c\u7a0b\u5e8f\u751f\u6210\u7684log.txt\u6587\u4ef6\u5148\u5220\u9664\uff0c\u7136\u540e\u518d\u505a\u4e00\u4e2a\u6d4b\u8bd5\uff1a\u56de\u9000\u5230\u4e0a\u7ea7\u76ee\u5f55\uff0c\u5728\u4e0a\u7ea7\u76ee\u5f55\u4e0b\u8fd0\u884c\u8be5\u53ef\u6267\u884c\u7a0b\u5e8f\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16698985546229.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u8fd9\u65f6\u6211\u4eec\u53ef\u4ee5\u53d1\u73b0\uff0c\u8be5\u53ef\u6267\u884c\u7a0b\u5e8f\u8fd0\u884c\u540e\u5e76\u6ca1\u6709\u5728BasicIO\u76ee\u5f55\u4e0b\u521b\u5efalog.txt\u6587\u4ef6\uff0c\u800c\u662f\u5728\u6211\u4eec\u5f53\u524d\u6240\u5904\u7684\u8def\u5f84\u4e0b\u521b\u5efa\u4e86log.txt\u6587\u4ef6\u3002<\/p>\n\n\n\n<p>\u5f53\u8be5\u53ef\u6267\u884c\u7a0b\u5e8f\u8fd0\u884c\u8d77\u6765\u53d8\u6210\u8fdb\u7a0b\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u83b7\u53d6\u8be5\u8fdb\u7a0b\u7684PID\uff0c\u7136\u540e\u6839\u636e\u8be5PID\u5728\u6839\u76ee\u5f55\u4e0b\u7684proc\u76ee\u5f55\u4e0b\u67e5\u770b\u8be5\u8fdb\u7a0b\u7684\u4fe1\u606f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166989889549812.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166989889549812.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u5728\u8fd9\u91cc\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u4e24\u4e2a\u8f6f\u94fe\u63a5\u6587\u4ef6cwd\u548cexe\uff0ccwd\u5c31\u662f\u8fdb\u7a0b\u8fd0\u884c\u65f6\u6211\u4eec\u6240\u5904\u7684\u8def\u5f84\uff0c\u800cexe\u5c31\u662f\u8be5\u53ef\u6267\u884c\u7a0b\u5e8f\u6240\u5904\u7684\u8def\u5f84\uff08\u76ee\u5f55\u52a0\u76ee\u5f55\u6216\u6587\u4ef6\u540d\uff09\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u603b\u7ed3\uff1a<\/strong> \u5b9e\u9645\u4e0a\uff0c\u6211\u4eec\u8fd9\u91cc\u6240\u8bf4\u7684\u5f53\u524d\u8def\u5f84\u4e0d\u662f\u6307\u53ef\u6267\u884c\u7a0b\u5e8f\u6240\u5904\u8def\u5f84\uff0c\u800c\u662f\u6307\u8be5\u53ef\u6267\u884c\u7a0b\u5e8f\u8fd0\u884c\u6210\u4e3a\u8fdb\u7a0b\u65f6\u6211\u4eec\u6240\u5904\u7684\u8def\u5f84\u3002<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\u9ed8\u8ba4\u6253\u5f00\u7684\u4e09\u4e2a\u6d41<\/h3>\n\n\n\n<p>\u90fd\u8bf4Linux\u4e0b\u4e00\u5207\u7686\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u8bf4Linux\u4e0b\u7684\u4efb\u4f55\u4e1c\u897f\u90fd\u53ef\u4ee5\u770b\u4f5c\u662f\u6587\u4ef6\uff0c\u90a3\u4e48\u663e\u793a\u5668\u548c\u952e\u76d8\u5f53\u7136\u4e5f\u53ef\u4ee5\u770b\u4f5c\u662f\u6587\u4ef6\u3002\u6211\u4eec\u80fd\u770b\u5230\u663e\u793a\u5668\u4e0a\u7684\u6570\u636e\uff0c\u662f\u56e0\u4e3a\u6211\u4eec\u5411\u201c\u663e\u793a\u5668\u6587\u4ef6\u201d\u5199\u5165\u4e86\u6570\u636e\uff0c\u7535\u8111\u80fd\u83b7\u53d6\u5230\u6211\u4eec\u6572\u51fb\u952e\u76d8\u65f6\u5bf9\u5e94\u7684\u5b57\u7b26\uff0c\u662f\u56e0\u4e3a\u7535\u8111\u4ece\u201c\u952e\u76d8\u6587\u4ef6\u201d\u8bfb\u53d6\u4e86\u6570\u636e\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u4e3a\u4ec0\u4e48\u6211\u4eec\u5411\u201d\u663e\u793a\u5668\u6587\u4ef6\u201c\u5199\u5165\u6570\u636e\u4ee5\u53ca\u4ece\u201d\u952e\u76d8\u6587\u4ef6\u201c\u8bfb\u53d6\u6570\u636e\u524d\uff0c\u4e0d\u9700\u8981\u8fdb\u884c\u6253\u5f00\u201d\u663e\u793a\u5668\u6587\u4ef6\u201c\u548c\u201d\u952e\u76d8\u6587\u4ef6\u201c\u7684\u76f8\u5e94\u64cd\u4f5c\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u6253\u5f00\u6587\u4ef6\u4e00\u5b9a\u662f\u8fdb\u7a0b\u8fd0\u884c\u7684\u65f6\u5019\u6253\u5f00\u7684\uff0c\u800c\u4efb\u4f55\u8fdb\u7a0b\u5728\u8fd0\u884c\u7684\u65f6\u5019\u90fd\u4f1a\u9ed8\u8ba4\u6253\u5f00\u4e09\u4e2a\u8f93\u5165\u8f93\u51fa\u6d41\uff0c\u5373\u6807\u51c6\u8f93\u5165\u6d41\u3001\u6807\u51c6\u8f93\u51fa\u6d41\u4ee5\u53ca\u6807\u51c6\u9519\u8bef\u6d41\uff0c\u5bf9\u5e94\u5230C\u8bed\u8a00\u5f53\u4e2d\u5c31\u662fstdin\u3001stdout\u4ee5\u53castderr\u3002<br>\u5176\u4e2d\uff0c\u6807\u51c6\u8f93\u5165\u6d41\u5bf9\u5e94\u7684\u8bbe\u5907\u5c31\u662f\u952e\u76d8\uff0c\u6807\u51c6\u8f93\u51fa\u6d41\u548c\u6807\u51c6\u9519\u8bef\u6d41\u5bf9\u5e94\u7684\u8bbe\u5907\u90fd\u662f\u663e\u793a\u5668\u3002<\/p>\n\n\n\n<p>\u67e5\u770bman\u624b\u518c\u6211\u4eec\u5c31\u53ef\u4ee5\u53d1\u73b0\uff0cstdin\u3001stdout\u4ee5\u53castderr\u8fd9\u4e09\u4e2a\u5bb6\u4f19\u5b9e\u9645\u4e0a\u90fd\u662fFILE *\u7c7b\u578b\u7684\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>extern FILE *stdin;\nextern FILE *stdout;\nextern FILE *stderr;<\/code><\/pre>\n\n\n\n<p>\u5f53\u6211\u4eec\u7684C\u7a0b\u5e8f\u88ab\u8fd0\u884c\u8d77\u6765\u65f6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5c31\u4f1a\u9ed8\u8ba4\u4f7f\u7528C\u8bed\u8a00\u7684\u76f8\u5173\u63a5\u53e3\u5c06\u8fd9\u4e09\u4e2a\u8f93\u5165\u8f93\u51fa\u6d41\u6253\u5f00\uff0c\u4e4b\u540e\u6211\u4eec\u624d\u80fd\u8c03\u7528\u7c7b\u4f3c\u4e8escanf\u548cprintf\u4e4b\u7c7b\u7684\u51fd\u6570\u5411\u952e\u76d8\u548c\u663e\u793a\u5668\u8fdb\u884c\u76f8\u5e94\u7684\u8f93\u5165\u8f93\u51fa\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p>\u4e5f\u5c31\u662f\u8bf4\uff0cstdin\u3001stdout\u4ee5\u53castderr\u4e0e\u6211\u4eec\u6253\u5f00\u67d0\u4e00\u6587\u4ef6\u65f6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u6307\u9488\u662f\u540c\u4e00\u6982\u5ff5\uff0c\u8bd5\u60f3\u6211\u4eec\u4f7f\u7528fputs\u51fd\u6570\u65f6\uff0c\u5c06\u5176\u7b2c\u4e8c\u4e2a\u53c2\u6570\u8bbe\u7f6e\u4e3astdout\uff0c\u6b64\u65f6fputs\u51fd\u6570\u4f1a\u4e0d\u4f1a\u5c06\u6570\u636e\u663e\u793a\u5230\u663e\u793a\u5668\u5462?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\nint main()\n{\n    fputs(\"hello stdin\\n\", stdout);\n    fputs(\"hello stdout\\n\", stdout);\n    fputs(\"hello stderr\\n\", stdout);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u7b54\u6848\u662f\u80af\u5b9a\u7684\uff0c\u6b64\u65f6\u6211\u4eec\u76f8\u5f53\u4e8e\u4f7f\u7528fputs\u51fd\u6570\u5411\u201c\u663e\u793a\u5668\u6587\u4ef6\u201d\u5199\u5165\u6570\u636e\uff0c\u4e5f\u5c31\u662f\u663e\u793a\u5230\u663e\u793a\u5668\u4e0a\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166989993372615.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166989993372615.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u4e0d\u6b62\u662fC\u8bed\u8a00\u5f53\u4e2d\u6709\u6807\u51c6\u8f93\u5165\u6d41\u3001\u6807\u51c6\u8f93\u51fa\u6d41\u548c\u6807\u51c6\u9519\u8bef\u6d41\uff0cC++\u5f53\u4e2d\u4e5f\u6709\u5bf9\u5e94\u7684cin\u3001cout\u548ccerr\uff0c\u5176\u4ed6\u6240\u6709\u8bed\u8a00\u5f53\u4e2d\u90fd\u6709\u7c7b\u4f3c\u7684\u6982\u5ff5\u3002\u5b9e\u9645\u4e0a\u8fd9\u79cd\u7279\u6027\u5e76\u4e0d\u662f\u67d0\u79cd\u8bed\u8a00\u6240\u7279\u6709\u7684\uff0c\u800c\u662f\u7531\u64cd\u4f5c\u7cfb\u7edf\u6240\u652f\u6301\u7684\u3002<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u7cfb\u7edf\u6587\u4ef6IO<\/h2>\n\n\n\n<p>\u64cd\u4f5c\u6587\u4ef6\u9664\u4e86C\u8bed\u8a00\u63a5\u53e3\u3001C++\u63a5\u53e3\u6216\u662f\u5176\u4ed6\u8bed\u8a00\u7684\u63a5\u53e3\u5916\uff0c\u64cd\u4f5c\u7cfb\u7edf\u4e5f\u6709\u4e00\u5957\u7cfb\u7edf\u63a5\u53e3\u6765\u8fdb\u884c\u6587\u4ef6\u7684\u8bbf\u95ee\u3002<br>\u76f8\u6bd4\u4e8eC\u5e93\u51fd\u6570\u6216\u5176\u4ed6\u8bed\u8a00\u7684\u5e93\u51fd\u6570\u800c\u8a00\uff0c\u7cfb\u7edf\u8c03\u7528\u63a5\u53e3\u66f4\u8d34\u8fd1\u5e95\u5c42\uff0c\u5b9e\u9645\u4e0a\u8fd9\u4e9b\u8bed\u8a00\u7684\u5e93\u51fd\u6570\u90fd\u662f\u5bf9\u7cfb\u7edf\u63a5\u53e3\u8fdb\u884c\u4e86\u5c01\u88c5\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166990002246018.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166990002246018.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u6211\u4eec\u5728Linux\u5e73\u53f0\u4e0b\u8fd0\u884cC\u4ee3\u7801\u65f6\uff0cC\u5e93\u51fd\u6570\u5c31\u662f\u5bf9Linux\u7cfb\u7edf\u8c03\u7528\u63a5\u53e3\u8fdb\u884c\u7684\u5c01\u88c5\uff0c\u5728Windows\u5e73\u53f0\u4e0b\u8fd0\u884cC\u4ee3\u7801\u65f6\uff0cC\u5e93\u51fd\u6570\u5c31\u662f\u5bf9Windows\u7cfb\u7edf\u8c03\u7528\u63a5\u53e3\u8fdb\u884c\u7684\u5c01\u88c5\uff0c\u8fd9\u6837\u505a\u4f7f\u5f97\u8bed\u8a00\u6709\u4e86\u8de8\u5e73\u53f0\u6027\uff0c\u4e5f\u65b9\u4fbf\u8fdb\u884c\u4e8c\u6b21\u5f00\u53d1\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">open<\/h3>\n\n\n\n<p>\u7cfb\u7edf\u4e2d\u4f7f\u7528open\u51fd\u6570\u6253\u5f00\u6587\u4ef6\uff0copen\u51fd\u6570\u7684\u51fd\u6570\u539f\u578b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p><code>int open(const char* pathname,int flags,mode_t mode)<\/code><\/p>\n\n\n\n<p><strong>\u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a<\/strong><\/p>\n\n\n\n<p>open\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662fpathname\uff0c\u8868\u793a\u8981\u6253\u5f00\u6216\u521b\u5efa\u7684\u76ee\u6807\u6587\u4ef6\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u82e5pathname\u4ee5\u8def\u5f84\u7684\u65b9\u5f0f\u7ed9\u51fa\uff0c\u5219\u5f53\u9700\u8981\u521b\u5efa\u8be5\u6587\u4ef6\u65f6\uff0c\u5c31\u5728pathname\u8def\u5f84\u4e0b\u521b\u5efa\u3002<\/li>\n\n\n\n<li>\u82e5pathname\u4ee5\u6587\u4ef6\u540d\u7684\u65b9\u5f0f\u7ed9\u51fa\uff0c\u5219\u5f53\u9700\u8981\u521b\u5efa\u8be5\u6587\u4ef6\u65f6\uff0c\u9ed8\u8ba4\u5728\u5f53\u524d\u8def\u5f84\u4e0b\u8fdb\u884c\u521b\u5efa\u3002\uff08\u6ce8\u610f\u5f53\u524d\u8def\u5f84\u7684\u542b\u4e49\uff09<\/li>\n<\/ul>\n\n\n\n<p><strong>\u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a<\/strong><\/p>\n\n\n\n<p>open\u51fd\u6570\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662fflags\uff0c\u8868\u793a\u6253\u5f00\u6587\u4ef6\u7684\u65b9\u5f0f\u3002<\/p>\n\n\n\n<p>\u5176\u4e2d\u5e38\u7528\u9009\u9879\u6709\u5982\u4e0b\u51e0\u4e2a\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">\u53c2\u6570\u9009\u9879<\/th><th class=\"has-text-align-center\" data-align=\"center\">\u542b\u4e49<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">O_RDONLY<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u4ee5\u53ea\u8bfb\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">O_WRONLY<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u4ee5\u53ea\u5199\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">O_APPEND<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u4ee5\u8ffd\u52a0\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">O_RDWR<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u4ee5\u8bfb\u5199\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">O_CREAT<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u5f53\u76ee\u6807\u6587\u4ef6\u4e0d\u5b58\u5728\u65f6\uff0c\u521b\u5efa\u6587\u4ef6<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u6253\u5f00\u6587\u4ef6\u65f6\uff0c\u53ef\u4ee5\u4f20\u5165\u591a\u4e2a\u53c2\u6570\u9009\u9879\uff0c\u5f53\u6709\u591a\u4e2a\u9009\u9879\u4f20\u5165\u65f6\uff0c\u5c06\u8fd9\u4e9b\u9009\u9879\u7528\u201d\u6216\u201c\u8fd0\u7b97\u7b26\u9694\u5f00\u3002<\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u82e5\u60f3\u4ee5\u53ea\u5199\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\uff0c\u4f46\u5f53\u76ee\u6807\u6587\u4ef6\u4e0d\u5b58\u5728\u65f6\u81ea\u52a8\u521b\u5efa\uff0c\u5219\u7b2c\u4e8c\u4e2a\u53c2\u6570\u8bbe\u7f6e\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p><code>O_WRONLY | O_CREAT<\/code><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u6269\u5c55\uff1a<\/p>\n<\/blockquote>\n\n\n\n<p>\u7cfb\u7edf\u63a5\u53e3open\u7684\u7b2c\u4e8c\u4e2a\u53c2\u6570flags\u662f\u6574\u578b\uff0c\u670932\u6bd4\u7279\u4f4d\uff0c\u82e5\u5c06\u4e00\u4e2a\u6bd4\u7279\u4f4d\u4f5c\u4e3a\u4e00\u4e2a\u6807\u5fd7\u4f4d\uff0c\u5219\u7406\u8bba\u4e0aflags\u53ef\u4ee5\u4f20\u901232\u79cd\u4e0d\u540c\u7684\u6807\u5fd7\u4f4d\u3002<\/p>\n\n\n\n<p>\u5b9e\u9645\u4e0a\u4f20\u5165flags\u7684\u6bcf\u4e00\u4e2a\u9009\u9879\u5728\u7cfb\u7edf\u5f53\u4e2d\u90fd\u662f\u4ee5\u5b8f\u7684\u65b9\u5f0f\u8fdb\u884c\u5b9a\u4e49\u7684\uff1a<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-17023807274203.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\"><\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c<code>O_RDONLY<\/code>\u3001<code>O_WRONLY<\/code>\u3001<code>O_RDWR<\/code>\u548c<code>O_CREAT<\/code>\u5728\u7cfb\u7edf\u5f53\u4e2d\u7684\u5b8f\u5b9a\u4e49\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define O_RDONLY         00\n#define O_WRONLY         01\n#define O_RDWR           02\n#define O_CREAT        0100<\/code><\/pre>\n\n\n\n<p>\u8fd9\u4e9b\u5b8f\u5b9a\u4e49\u9009\u9879\u7684\u5171\u540c\u70b9\u5c31\u662f\uff0c\u5b83\u4eec\u7684\u4e8c\u8fdb\u5236\u5e8f\u5217\u5f53\u4e2d\u6709\u4e14\u53ea\u6709\u4e00\u4e2a\u6bd4\u7279\u4f4d\u662f1(O_RDONLY\u9009\u9879\u7684\u4e8c\u8fdb\u5236\u5e8f\u5217\u4e3a\u51680\uff0c\u8868\u793aO_RDONLY\u9009\u9879\u4e3a\u9ed8\u8ba4\u9009\u9879)\uff0c\u4e14\u4e3a1\u7684\u6bd4\u7279\u4f4d\u662f\u5404\u4e0d\u76f8\u540c\u7684\uff0c\u8fd9\u6837\u4e00\u6765\uff0c\u5728open\u51fd\u6570\u5185\u90e8\u5c31\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528\u201c\u4e0e\u201d\u8fd0\u7b97\u6765\u5224\u65ad\u662f\u5426\u8bbe\u7f6e\u4e86\u67d0\u4e00\u9009\u9879\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>int open(arg1, arg2, arg3){\n    if (arg2&amp;O_RDONLY){\n        \/\/\u8bbe\u7f6e\u4e86O_RDONLY\u9009\u9879\n    }\n    if (arg2&amp;O_WRONLY){\n        \/\/\u8bbe\u7f6e\u4e86O_WRONLY\u9009\u9879\n    }\n    if (arg2&amp;O_RDWR){\n        \/\/\u8bbe\u7f6e\u4e86O_RDWR\u9009\u9879\n    }\n    if (arg2&amp;O_CREAT){\n        \/\/\u8bbe\u7f6e\u4e86O_CREAT\u9009\u9879\n    }\n    \/\/...\n}<\/code><\/pre>\n\n\n\n<p><strong>open\u7684\u7b2c\u4e09\u4e2a\u53c2\u6570\uff1a<\/strong><\/p>\n\n\n\n<p>open\u51fd\u6570\u7684\u7b2c\u4e09\u4e2a\u53c2\u6570\u662fmode\uff0c\u8868\u793a\u521b\u5efa\u6587\u4ef6\u7684\u9ed8\u8ba4\u6743\u9650\u3002<\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5c06mode\u8bbe\u7f6e\u4e3a<code>0666<\/code>\uff0c\u5219\u6587\u4ef6\u521b\u5efa\u51fa\u6765\u7684\u6743\u9650\u5982\u4e0b\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/c9c234c4fb69498583e9182b6916fdce.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/c9c234c4fb69498583e9182b6916fdce.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u4f46\u5b9e\u9645\u4e0a\u521b\u5efa\u51fa\u6765\u6587\u4ef6\u7684\u6743\u9650\u503c\u8fd8\u4f1a\u53d7\u5230umask\uff08\u6587\u4ef6\u9ed8\u8ba4\u63a9\u7801\uff09\u7684\u5f71\u54cd\uff0c\u5b9e\u9645\u521b\u5efa\u51fa\u6765\u6587\u4ef6\u7684\u6743\u9650\u4e3a\uff1amode&amp;(~umask)\u3002umask\u7684\u9ed8\u8ba4\u503c\u4e00\u822c\u4e3a0002\uff0c\u5f53\u6211\u4eec\u8bbe\u7f6emode\u503c\u4e3a0666\u65f6\u5b9e\u9645\u521b\u5efa\u51fa\u6765\u6587\u4ef6\u7684\u6743\u9650\u4e3a0664\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/a7b806f68f3a482194078867c0ca2007.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/a7b806f68f3a482194078867c0ca2007.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u82e5\u60f3\u521b\u5efa\u51fa\u6765\u6587\u4ef6\u7684\u6743\u9650\u503c\u4e0d\u53d7umask\u7684\u5f71\u54cd\uff0c\u5219\u9700\u8981\u5728\u521b\u5efa\u6587\u4ef6\u524d\u4f7f\u7528<code>umask<\/code>\u51fd\u6570\u5c06\u6587\u4ef6\u9ed8\u8ba4\u63a9\u7801\u8bbe\u7f6e\u4e3a0\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>umask(0); \/\/\u5c06\u6587\u4ef6\u9ed8\u8ba4\u63a9\u7801\u8bbe\u7f6e\u4e3a0<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u5f53\u4e0d\u9700\u8981\u521b\u5efa\u6587\u4ef6\u65f6\uff0copen\u7684\u7b2c\u4e09\u4e2a\u53c2\u6570\u53ef\u4ee5\u4e0d\u5fc5\u8bbe\u7f6e\u3002<\/p>\n<\/blockquote>\n\n\n\n<p><strong>open\u7684\u8fd4\u56de\u503c<\/strong><\/p>\n\n\n\n<p>open\u51fd\u6570\u7684\u8fd4\u56de\u503c\u662f\u65b0\u6253\u5f00\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    umask(0);\n    int fd1 = open(\"log1.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd2 = open(\"log2.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd3 = open(\"log3.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd4 = open(\"log4.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd5 = open(\"log5.txt\", O_RDONLY | O_CREAT, 0666);\n    printf(\"fd1:%d\\n\", fd1);\n    printf(\"fd2:%d\\n\", fd2);\n    printf(\"fd3:%d\\n\", fd3);\n    printf(\"fd4:%d\\n\", fd4);\n    printf(\"fd5:%d\\n\", fd5);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7a0b\u5e8f\u540e\u53ef\u4ee5\u770b\u5230\uff0c\u6253\u5f00\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f\u4ece3\u5f00\u59cb\u8fde\u7eed\u4e14\u9012\u589e\u7684\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166990262525231.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166990262525231.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u6211\u4eec\u518d\u5c1d\u8bd5\u6253\u5f00\u4e00\u4e2a\u6839\u672c\u4e0d\u5b58\u5728\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662fopen\u51fd\u6570\u6253\u5f00\u6587\u4ef6\u5931\u8d25\u3002<\/p>\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;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    int fd = open(\"test.txt\", O_RDONLY);\n    printf(\"%d\\n\", fd);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7a0b\u5e8f\u540e\u53ef\u4ee5\u770b\u5230\uff0c\u6253\u5f00\u6587\u4ef6\u5931\u8d25\u65f6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f-1\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166990266726234.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-166990266726234.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u5b9e\u9645\u4e0a\u8fd9\u91cc\u6240\u8c13\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u6307\u9488\u6570\u7ec4\u7684\u4e0b\u6807\uff0c\u6307\u9488\u6570\u7ec4\u5f53\u4e2d\u7684\u6bcf\u4e00\u4e2a\u6307\u9488\u90fd\u6307\u5411\u4e00\u4e2a\u88ab\u6253\u5f00\u6587\u4ef6\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u901a\u8fc7\u5bf9\u5e94\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u5c31\u53ef\u4ee5\u627e\u5230\u5bf9\u5e94\u7684\u6587\u4ef6\u4fe1\u606f\u3002<br>\u5f53\u4f7f\u7528open\u51fd\u6570\u6253\u5f00\u6587\u4ef6\u6210\u529f\u65f6\u6570\u7ec4\u5f53\u4e2d\u7684\u6307\u9488\u4e2a\u6570\u589e\u52a0\uff0c\u7136\u540e\u5c06\u8be5\u6307\u9488\u5728\u6570\u7ec4\u5f53\u4e2d\u7684\u4e0b\u6807\u8fdb\u884c\u8fd4\u56de\uff0c\u800c\u5f53\u6587\u4ef6\u6253\u5f00\u5931\u8d25\u65f6\u76f4\u63a5\u8fd4\u56de-1\uff0c\u56e0\u6b64\uff0c\u6210\u529f\u6253\u5f00\u591a\u4e2a\u6587\u4ef6\u65f6\u6240\u83b7\u5f97\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u5c31\u662f\u8fde\u7eed\u4e14\u9012\u589e\u7684\u3002<br>\u800cLinux\u8fdb\u7a0b\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u67093\u4e2a\u7f3a\u7701\u6253\u5f00\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u5206\u522b\u5c31\u662f\u6807\u51c6\u8f93\u51650\u3001\u6807\u51c6\u8f93\u51fa1\u3001\u6807\u51c6\u9519\u8bef2\uff0c\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u6210\u529f\u6253\u5f00\u6587\u4ef6\u65f6\u6240\u5f97\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f\u4ece3\u5f00\u59cb\u8fdb\u7a0b\u5206\u914d\u7684\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">close<\/h3>\n\n\n\n<p>\u7cfb\u7edf\u63a5\u53e3\u4e2d\u4f7f\u7528close\u51fd\u6570\u5173\u95ed\u6587\u4ef6\uff0cclose\u51fd\u6570\u7684\u51fd\u6570\u539f\u578b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p><code>int close(int fd)<\/code><\/p>\n\n\n\n<p>\u4f7f\u7528close\u51fd\u6570\u65f6\u4f20\u5165\u9700\u8981\u5173\u95ed\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u5373\u53ef\uff0c\u82e5\u5173\u95ed\u6587\u4ef6\u6210\u529f\u5219\u8fd4\u56de0\uff0c\u82e5\u5173\u95ed\u6587\u4ef6\u5931\u8d25\u5219\u8fd4\u56de-1\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">write<\/h3>\n\n\n\n<p>\u7cfb\u7edf\u63a5\u53e3\u4e2d\u4f7f\u7528write\u51fd\u6570\u5411\u6587\u4ef6\u5199\u5165\u4fe1\u606f\uff0cwrite\u51fd\u6570\u7684\u51fd\u6570\u539f\u578b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p><code>ssize_t write(int fd, const void* buf,size_t count)<\/code><\/p>\n\n\n\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528write\u51fd\u6570\uff0c\u5c06buf\u4f4d\u7f6e\u5f00\u59cb\u5411\u540ecount\u5b57\u8282\u7684\u6570\u636e\u5199\u5165\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3afd\u7684\u6587\u4ef6\u5f53\u4e2d\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5982\u679c\u6570\u636e\u5199\u5165\u6210\u529f\uff0c\u5b9e\u9645\u5199\u5165\u6570\u636e\u7684\u5b57\u8282\u4e2a\u6570\u88ab\u8fd4\u56de\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u6570\u636e\u5199\u5165\u5931\u8d25\uff0c-1\u88ab\u8fd4\u56de\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u5bf9\u6587\u4ef6\u8fdb\u884c\u5199\u5165\u64cd\u4f5c\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    int fd = open(\"log.txt\", O_WRONLY | O_CREAT, 0666);\n    if (fd &lt; 0){\n        perror(\"open\");\n        return 1;\n    }\n    const char* msg = \"hello syscall\\n\";\n    for (int i = 0; i &lt; 5; i++){\n        write(fd, msg, strlen(msg));\n    }\n    close(fd);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7a0b\u5e8f\u540e\uff0c\u5728\u5f53\u524d\u8def\u5f84\u4e0b\u5c31\u4f1a\u751f\u6210\u5bf9\u5e94\u6587\u4ef6\uff0c\u6587\u4ef6\u5f53\u4e2d\u5c31\u662f\u6211\u4eec\u5199\u5165\u7684\u5185\u5bb9\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/image-20221201232332435.png\" alt=\"image-20221201232332435\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">read<\/h3>\n\n\n\n<p>\u7cfb\u7edf\u63a5\u53e3\u4e2d\u4f7f\u7528read\u51fd\u6570\u4ece\u6587\u4ef6\u8bfb\u53d6\u4fe1\u606f\uff0cread\u51fd\u6570\u7684\u51fd\u6570\u539f\u578b\u5982\u4e0b:<\/p>\n\n\n\n<p><code>ssize_t read(int fd,void* buf,size_t count)<\/code><\/p>\n\n\n\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528read\u51fd\u6570,\u4ece\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3afd\u7684\u6587\u4ef6\u8bfb\u53d6count\u5b57\u8282\u7684\u6570\u636e\u5230buf\u4f4d\u7f6e\u5f53\u4e2d\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5982\u679c\u6570\u636e\u8bfb\u53d6\u6210\u529f\uff0c\u5b9e\u9645\u8bfb\u53d6\u6570\u636e\u7684\u5b57\u8282\u4e2a\u6570\u88ab\u8fd4\u56de\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u6570\u636e\u8bfb\u53d6\u5931\u8d25\uff0c -1\u88ab\u8fd4\u56de\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u5bf9\u6587\u4ef6\u8fdb\u884c\u8bfb\u53d6\u64cd\u4f5c\u793a\u4f8b\uff1a<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;string.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    int fd = open(\"log.txt\", O_RDONLY);\n    if (fd &lt; 0){\n        perror(\"open\");\n        return 1;\n    }\n    char ch;\n    while (1){\n        ssize_t s = read(fd, &amp;ch, 1);\n        if (s &lt;= 0){\n            break;\n        }\n        write(1, &amp;ch, 1); \/\/\u5411\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u7684\u6587\u4ef6\u5199\u5165\u6570\u636e\uff0c\u5373\u5411\u663e\u793a\u5668\u5199\u5165\u6570\u636e\n    }\n    close(fd);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7a0b\u5e8f\u540e\uff0c\u5c31\u4f1a\u5c06\u6211\u4eec\u521a\u624d\u5199\u5165\u6587\u4ef6\u7684\u5185\u5bb9\u8bfb\u53d6\u51fa\u6765\uff0c\u5e76\u6253\u5370\u5728\u663e\u793a\u5668\u4e0a\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-17023845232746.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6587\u4ef6\u63cf\u8ff0\u7b26fd<\/h2>\n\n\n\n<p>\u6587\u4ef6\u662f\u7531\u8fdb\u7a0b\u8fd0\u884c\u65f6\u6253\u5f00\u7684\uff0c\u4e00\u4e2a\u8fdb\u7a0b\u53ef\u4ee5\u6253\u5f00\u591a\u4e2a\u6587\u4ef6\uff0c\u800c\u7cfb\u7edf\u5f53\u4e2d\u53c8\u5b58\u5728\u5927\u91cf\u8fdb\u7a0b\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5728\u7cfb\u7edf\u4e2d\u4efb\u4f55\u65f6\u523b\u90fd\u53ef\u80fd\u5b58\u5728\u5927\u91cf\u5df2\u7ecf\u6253\u5f00\u7684\u6587\u4ef6\u3002<br>\u56e0\u6b64\uff0c\u64cd\u4f5c\u7cfb\u7edf\u52a1\u5fc5\u8981\u5bf9\u8fd9\u4e9b\u5df2\u7ecf\u6253\u5f00\u7684\u6587\u4ef6\u8fdb\u884c\u7ba1\u7406\uff0c\u64cd\u4f5c\u7cfb\u7edf\u4f1a\u4e3a\u6bcf\u4e2a\u5df2\u7ecf\u6253\u5f00\u7684\u6587\u4ef6\u521b\u5efa\u5404\u81ea\u7684struct file\u7ed3\u6784\u4f53\uff0c\u7136\u540e\u5c06\u8fd9\u4e9b\u7ed3\u6784\u4f53\u4ee5\u53cc\u94fe\u8868\u7684\u5f62\u5f0f\u8fde\u63a5\u8d77\u6765\uff0c\u4e4b\u540e\u64cd\u4f5c\u7cfb\u7edf\u5bf9\u6587\u4ef6\u7684\u7ba1\u7406\u4e5f\u5c31\u53d8\u6210\u4e86\u5bf9\u8fd9\u5f20\u53cc\u94fe\u8868\u7684\u589e\u5220\u67e5\u6539\u7b49\u64cd\u4f5c\u3002<br>\u800c\u4e3a\u4e86\u533a\u5206\u5df2\u7ecf\u6253\u5f00\u7684\u6587\u4ef6\u54ea\u4e9b\u5c5e\u4e8e\u7279\u5b9a\u7684\u67d0\u4e00\u4e2a\u8fdb\u7a0b\uff0c\u6211\u4eec\u5c31\u8fd8\u9700\u8981\u5efa\u7acb\u8fdb\u7a0b\u548c\u6587\u4ef6\u4e4b\u95f4\u7684\u5bf9\u5e94\u5173\u7cfb\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u8fdb\u7a0b\u548c\u6587\u4ef6\u4e4b\u95f4\u7684\u5bf9\u5e94\u5173\u7cfb\u662f\u5982\u4f55\u5efa\u7acb\u7684\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u6211\u4eec\u77e5\u9053\uff0c\u5f53\u4e00\u4e2a\u7a0b\u5e8f\u8fd0\u884c\u8d77\u6765\u65f6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u4f1a\u5c06\u8be5\u7a0b\u5e8f\u7684\u4ee3\u7801\u548c\u6570\u636e\u52a0\u8f7d\u5230\u5185\u5b58\uff0c\u7136\u540e\u4e3a\u5176\u521b\u5efa\u5bf9\u5e94\u7684task_struct\u3001mm_struct\u3001\u9875\u8868\u7b49\u76f8\u5173\u7684\u6570\u636e\u7ed3\u6784\uff0c\u5e76\u901a\u8fc7\u9875\u8868\u5efa\u7acb\u865a\u62df\u5185\u5b58\u548c\u7269\u7406\u5185\u5b58\u4e4b\u95f4\u7684\u6620\u5c04\u5173\u7cfb\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16699117469083.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u800ctask_struct\u5f53\u4e2d\u6709\u4e00\u4e2a\u6307\u9488\uff0c\u8be5\u6307\u9488\u6307\u5411\u4e00\u4e2a\u540d\u4e3afiles_struct\u7684\u7ed3\u6784\u4f53\uff0c\u5728\u8be5\u7ed3\u6784\u4f53\u5f53\u4e2d\u5c31\u6709\u4e00\u4e2a\u540d\u4e3afd_array\u7684\u6307\u9488\u6570\u7ec4\uff0c\u8be5\u6570\u7ec4\u7684\u4e0b\u6807\u5c31\u662f\u6211\u4eec\u6240\u8c13\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u3002<\/p>\n\n\n\n<p>\u5f53\u8fdb\u7a0b\u6253\u5f00log.txt\u6587\u4ef6\u65f6\uff0c\u6211\u4eec\u9700\u8981\u5148\u5c06\u8be5\u6587\u4ef6\u4ece\u78c1\u76d8\u5f53\u4e2d\u52a0\u8f7d\u5230\u5185\u5b58\uff0c\u5f62\u6210\u5bf9\u5e94\u7684struct file\uff0c\u5c06\u8be5struct file\u8fde\u5165\u6587\u4ef6\u53cc\u94fe\u8868\uff0c\u5e76\u5c06\u8be5\u7ed3\u6784\u4f53\u7684\u9996\u5730\u5740\u586b\u5165\u5230fd_array\u6570\u7ec4\u5f53\u4e2d\u4e0b\u6807\u4e3a3\u7684\u4f4d\u7f6e\uff0c\u4f7f\u5f97fd_array\u6570\u7ec4\u4e2d\u4e0b\u6807\u4e3a3\u7684\u6307\u9488\u6307\u5411\u8be5struct file\uff0c\u6700\u540e\u8fd4\u56de\u8be5\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u7ed9\u8c03\u7528\u8fdb\u7a0b\u5373\u53ef\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16699123302216.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16699123302216.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u56e0\u6b64\uff0c\u6211\u4eec\u53ea\u8981\u6709\u67d0\u4e00\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u5c31\u53ef\u4ee5\u627e\u5230\u4e0e\u8be5\u6587\u4ef6\u76f8\u5173\u7684\u6587\u4ef6\u4fe1\u606f\uff0c\u8fdb\u800c\u5bf9\u6587\u4ef6\u8fdb\u884c\u4e00\u7cfb\u5217\u7684\u8f93\u5165\u8f93\u51fa\u64cd\u4f5c\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u5411\u6587\u4ef6\u5199\u5165\u6570\u636e\u65f6\uff0c\u662f\u5148\u5c06\u6570\u636e\u5199\u5165\u5230\u5bf9\u5e94\u7684\u6587\u4ef6\u7684\u7f13\u51b2\u533a\u5f53\u4e2d\uff0c\u7136\u540e\u5b9a\u671f\u5c06\u7f13\u51b2\u533a\u6570\u636e\u5237\u65b0\u5230\u78c1\u76d8\u5f53\u4e2d\u3002<\/p>\n\n\n\n<p>\u4ec0\u4e48\u53eb\u505a\u8fdb\u7a0b\u521b\u5efa\u7684\u65f6\u5019\u4f1a\u9ed8\u8ba4\u6253\u5f000\u30011\u30012\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>0\u5c31\u662f\u6807\u51c6\u8f93\u5165\u6d41\uff0c\u5bf9\u5e94\u952e\u76d8\uff1b1\u5c31\u662f\u6807\u51c6\u8f93\u51fa\u6d41\uff0c\u5bf9\u5e94\u663e\u793a\u5668\uff1b2\u5c31\u662f\u6807\u51c6\u9519\u8bef\u6d41\uff0c\u5bf9\u5e94\u663e\u793a\u5668\u3002<\/p>\n\n\n\n<p>\u800c\u952e\u76d8\u548c\u663e\u793a\u5668\u90fd\u5c5e\u4e8e\u786c\u4ef6\uff0c\u5c5e\u4e8e\u786c\u4ef6\u5c31\u610f\u5473\u7740\u64cd\u4f5c\u7cfb\u7edf\u80fd\u591f\u8bc6\u522b\u5230\uff0c\u5f53\u67d0\u4e00\u8fdb\u7a0b\u521b\u5efa\u65f6\uff0c\u64cd\u4f5c\u7cfb\u7edf\u5c31\u4f1a\u6839\u636e\u952e\u76d8\u3001\u663e\u793a\u5668\u3001\u663e\u793a\u5668\u5f62\u6210\u5404\u81ea\u7684struct file\uff0c\u5c06\u8fd93\u4e2astruct file\u8fde\u5165\u6587\u4ef6\u53cc\u94fe\u8868\u4e2d\uff0c\u5e76\u5c06\u8fd93\u4e2astruct file\u7684\u5730\u5740\u5206\u522b\u586b\u5165fd_array\u6570\u7ec4\u4e0b\u6807\u4e3a0\u30011\u30012\u7684\u4f4d\u7f6e\uff0c\u81f3\u6b64\u5c31\u9ed8\u8ba4\u6253\u5f00\u4e86\u6807\u51c6\u8f93\u5165\u6d41\u3001\u6807\u51c6\u8f93\u51fa\u6d41\u3001\u6807\u51c6\u9519\u8bef\u6d41\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u78c1\u76d8\u6587\u4ef6VS\u5185\u5b58\u6587\u4ef6\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u5f53\u6587\u4ef6\u5b58\u50a8\u5728\u78c1\u76d8\u5f53\u4e2d\u65f6\uff0c\u6211\u4eec\u5c06\u5176\u79f0\u4e4b\u4e3a\u78c1\u76d8\u6587\u4ef6\u3001\u800c\u5f53\u78c1\u76d8\u6587\u4ef6\u88ab\u52a0\u8f7d\u5230\u5185\u5b58\u5f53\u4e2d\u540e\uff0c\u6211\u4eec\u5c06\u52a0\u8f7d\u5230\u5185\u5b58\u5f53\u4e2d\u7684\u6587\u4ef6\u79f0\u4e4b\u4e3a\u5185\u5b58\u6587\u4ef6\u3002\u78c1\u76d8\u6587\u4ef6\u548c\u5185\u5b58\u6587\u4ef6\u4e4b\u95f4\u7684\u5173\u7cfb\u5c31\u597d\u50cf\u7a0b\u5e8f\u548c\u8fdb\u7a0b\u4e4b\u95f4\u7684\u5173\u7cfb\u4e00\u6837\uff0c\u5f53\u7a0b\u5e8f\u8fd0\u884c\u8d77\u6765\u540e\u4fbf\u6210\u4e86\u8fdb\u7a0b\uff0c\u800c\u5f53\u78c1\u76d8\u6587\u4ef6\u52a0\u8f7d\u5230\u5185\u5b58\u540e\u4fbf\u6210\u4e86\u5185\u5b58\u6587\u4ef6\u3002<\/p>\n\n\n\n<p>\u78c1\u76d8\u6587\u4ef6\u7531\u4e24\u90e8\u5206\u6784\u6210\uff0c\u5206\u522b\u662f\u6587\u4ef6\u5185\u5bb9\u548c\u6587\u4ef6\u5c5e\u6027\u3002\u6587\u4ef6\u5185\u5bb9\u5c31\u662f\u6587\u4ef6\u5f53\u4e2d\u5b58\u50a8\u7684\u6570\u636e\uff0c\u6587\u4ef6\u5c5e\u6027\u5c31\u662f\u6587\u4ef6\u7684\u4e00\u4e9b\u57fa\u672c\u4fe1\u606f\uff0c\u4f8b\u5982\u6587\u4ef6\u540d\u3001\u6587\u4ef6\u5927\u5c0f\u4ee5\u53ca\u6587\u4ef6\u521b\u5efa\u7684\u65f6\u95f4\u7b49\u4fe1\u606f\u90fd\u662f\u6587\u4ef6\u5c5e\u6027\uff0c\u6587\u4ef6\u5c5e\u6027\u53c8\u88ab\u79f0\u4e3a\u5143\u4fe1\u606f\u3002<\/p>\n\n\n\n<p>\u6587\u4ef6\u52a0\u8f7d\u5230\u5185\u5b58\u65f6\uff0c\u4e00\u822c\u5148\u52a0\u8f7d\u6587\u4ef6\u7684\u5c5e\u6027\u4fe1\u606f\uff0c\u5f53\u9700\u8981\u5bf9\u6587\u4ef6\u5185\u5bb9\u8fdb\u884c\u8bfb\u53d6\u3001\u8f93\u5165\u6216\u8f93\u51fa\u7b49\u64cd\u4f5c\u65f6\uff0c\u518d\u5ef6\u540e\u5f0f\u7684\u52a0\u8f7d\u6587\u4ef6\u6570\u636e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\u5206\u914d\u89c4\u5219<\/h2>\n\n\n\n<p>\u5c1d\u8bd5\u8fde\u7eed\u6253\u5f00\u4e94\u4e2a\u6587\u4ef6\uff0c\u770b\u770b\u8fd9\u4e94\u4e2a\u6253\u5f00\u540e\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    umask(0);\n    int fd1 = open(\"log1.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd2 = open(\"log2.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd3 = open(\"log3.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd4 = open(\"log4.txt\", O_RDONLY | O_CREAT, 0666);\n    int fd5 = open(\"log5.txt\", O_RDONLY | O_CREAT, 0666);\n    printf(\"fd1:%d\\n\", fd1);\n    printf(\"fd2:%d\\n\", fd2);\n    printf(\"fd3:%d\\n\", fd3);\n    printf(\"fd4:%d\\n\", fd4);\n    printf(\"fd5:%d\\n\", fd5);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u53ef\u4ee5\u770b\u5230\u8fd9\u4e94\u4e2a\u6587\u4ef6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u90fd\u662f\u4ece3\u5f00\u59cb\u8fde\u7eed\u9012\u589e\u7684\uff0c\u8fd9\u5f88\u597d\u7406\u89e3\uff0c\u56e0\u4e3a\u6587\u4ef6\u63cf\u8ff0\u7b26\u672c\u8d28\u5c31\u662f\u6570\u7ec4\u7684\u4e0b\u6807\uff0c\u800c\u5f53\u8fdb\u7a0b\u521b\u5efa\u65f6\u5c31\u9ed8\u8ba4\u6253\u5f00\u4e86\u6807\u51c6\u8f93\u5165\u6d41\u3001\u6807\u51c6\u8f93\u51fa\u6d41\u548c\u6807\u51c6\u9519\u8bef\u6d41\uff0c\u4e5f\u5c31\u662f\u8bf4\u6570\u7ec4\u5f53\u4e2d\u4e0b\u6807\u4e3a0\u30011\u30012\u7684\u4f4d\u7f6e\u5df2\u7ecf\u88ab\u5360\u7528\u4e86\uff0c\u6240\u4ee5\u53ea\u80fd\u4ece3\u5f00\u59cb\u8fdb\u884c\u5206\u914d\u3002<br><img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-17023879507939.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\"><\/p>\n\n\n\n<p>\u82e5\u6211\u4eec\u5728\u6253\u5f00\u8fd9\u4e94\u4e2a\u6587\u4ef6\u524d\uff0c\u5148\u5173\u95ed\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a0\u7684\u6587\u4ef6\uff0c\u6b64\u540e\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\u5206\u914d\u53c8\u4f1a\u662f\u600e\u6837\u7684\u5462\uff1f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>close(0);<\/code><\/pre>\n\n\n\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u7b2c\u4e00\u4e2a\u6253\u5f00\u7684\u6587\u4ef6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u53d8\u6210\u4e860\uff0c\u800c\u4e4b\u540e\u6253\u5f00\u6587\u4ef6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u8fd8\u662f\u4ece3\u5f00\u59cb\u4f9d\u6b21\u9012\u589e\u7684\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16701216076953.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u6211\u4eec\u518d\u8bd5\u8bd5\u5728\u6253\u5f00\u8fd9\u4e94\u4e2a\u6587\u4ef6\u524d\uff0c\u5c06\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a0\u548c2\u7684\u6587\u4ef6\u90fd\u5173\u95ed\uff08\u4e0d\u8981\u5c06\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u7684\u6587\u4ef6\u5173\u95ed\uff0c\u56e0\u4e3a\u8fd9\u610f\u5473\u7740\u5173\u95ed\u4e86\u663e\u793a\u5668\u6587\u4ef6\uff0c\u6b64\u65f6\u8fd0\u884c\u7a0b\u5e8f\u5c06\u4e0d\u4f1a\u6709\u4efb\u4f55\u8f93\u51fa\uff09\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>close(0);\nclose(2);<\/code><\/pre>\n\n\n\n<p>\u53ef\u4ee5\u770b\u5230\u524d\u4e24\u4e2a\u6253\u5f00\u7684\u6587\u4ef6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f0\u548c2\uff0c\u4e4b\u540e\u6253\u5f00\u6587\u4ef6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u624d\u662f\u4ece3\u5f00\u59cb\u9012\u589e\u7684\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16701218411086.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u7ed3\u8bba\uff1a\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f\u4ece\u6700\u5c0f\u4f46\u662f\u6ca1\u6709\u88ab\u4f7f\u7528\u7684fd_array\u6570\u7ec4\u4e0b\u6807\u5f00\u59cb\u8fdb\u884c\u5206\u914d\u7684\u3002<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u91cd\u5b9a\u5411<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u91cd\u5b9a\u5411\u7684\u539f\u7406<\/h3>\n\n\n\n<p>\u5728\u660e\u786e\u4e86\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\u6982\u5ff5\u53ca\u5176\u5206\u914d\u89c4\u5219\u540e\uff0c\u73b0\u5728\u6211\u4eec\u5df2\u7ecf\u5177\u5907\u7406\u89e3\u91cd\u5b9a\u5411\u539f\u7406\u7684\u80fd\u529b\u4e86\u3002\u770b\u5b8c\u4e0b\u9762\u4e09\u4e2a\u4f8b\u5b50\u540e\uff0c\u4f60\u4f1a\u53d1\u73b0\u91cd\u5b9a\u5411\u7684\u672c\u8d28\u5c31\u662f\u4fee\u6539\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e0b\u6807\u5bf9\u5e94struct file*\u7684\u5185\u5bb9\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u8f93\u51fa\u91cd\u5b9a\u5411\u539f\u7406<\/p>\n<\/blockquote>\n\n\n\n<p>\u8f93\u51fa\u91cd\u5b9a\u5411\u5c31\u662f\uff0c\u5c06\u6211\u4eec\u672c\u5e94\u8be5\u8f93\u51fa\u5230\u4e00\u4e2a\u6587\u4ef6\u7684\u6570\u636e\u91cd\u5b9a\u5411\u8f93\u51fa\u5230\u53e6\u4e00\u4e2a\u6587\u4ef6\u4e2d\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012523274712.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u60f3\u8ba9\u672c\u5e94\u8be5\u8f93\u51fa\u5230\u201c\u663e\u793a\u5668\u6587\u4ef6\u201d\u7684\u6570\u636e\u8f93\u51fa\u5230log.txt\u6587\u4ef6\u5f53\u4e2d\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u5728\u6253\u5f00log.txt\u6587\u4ef6\u4e4b\u524d\u5c06\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u7684\u6587\u4ef6\u5173\u95ed\uff0c\u4e5f\u5c31\u662f\u5c06\u201c\u663e\u793a\u5668\u6587\u4ef6\u201d\u5173\u95ed\uff0c\u8fd9\u6837\u4e00\u6765\uff0c\u5f53\u6211\u4eec\u540e\u7eed\u6253\u5f00log.txt\u6587\u4ef6\u65f6\u6240\u5206\u914d\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u5c31\u662f1\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    close(1);\n    int fd = open(\"log.txt\", O_WRONLY | O_CREAT, 0666);\n    if (fd &lt; 0){\n        perror(\"open\");\n        return 1;\n    }\n    printf(\"hello world\\n\");\n    printf(\"hello world\\n\");\n    printf(\"hello world\\n\");\n    printf(\"hello world\\n\");\n    printf(\"hello world\\n\");\n    fflush(stdout);\n\n    close(fd);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7ed3\u679c\u540e\uff0c\u6211\u4eec\u53d1\u73b0\u663e\u793a\u5668\u4e0a\u5e76\u6ca1\u6709\u8f93\u51fa\u6570\u636e\uff0c\u5bf9\u5e94\u6570\u636e\u8f93\u51fa\u5230\u4e86log.txt\u6587\u4ef6\u5f53\u4e2d\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16701249055859.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16701249055859.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u8bf4\u660e\u4e00\u4e0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>printf\u51fd\u6570\u662f\u9ed8\u8ba4\u5411stdout\u8f93\u51fa\u6570\u636e\u7684\uff0c\u800cstdout\u6307\u5411\u7684\u662f\u4e00\u4e2astruct file\u7c7b\u578b\u7684\u7ed3\u6784\u4f53\uff0c\u8be5\u7ed3\u6784\u4f53\u5f53\u4e2d\u6709\u4e00\u4e2a\u5b58\u50a8\u6587\u4ef6\u63cf\u8ff0\u7b26\u7684\u53d8\u91cf\uff0c\u800cstdout\u6307\u5411\u7684struct file\u7ed3\u6784\u4f53\u4e2d\u5b58\u50a8\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u5c31\u662f1\uff0c\u56e0\u6b64printf\u5b9e\u9645\u4e0a\u5c31\u662f\u5411\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u7684\u6587\u4ef6\u8f93\u51fa\u6570\u636e\u3002<\/li>\n\n\n\n<li>C\u8bed\u8a00\u7684\u6570\u636e\u5e76\u4e0d\u662f\u7acb\u9a6c\u5199\u5230\u4e86\u5185\u5b58\u64cd\u4f5c\u7cfb\u7edf\u91cc\u9762\uff0c\u800c\u662f\u5199\u5230\u4e86C\u8bed\u8a00\u7684\u7f13\u51b2\u533a\u5f53\u4e2d\uff0c\u6240\u4ee5\u4f7f\u7528printf\u6253\u5370\u5b8c\u540e\u9700\u8981\u4f7f\u7528fflush\u5c06C\u8bed\u8a00\u7f13\u51b2\u533a\u5f53\u4e2d\u7684\u6570\u636e\u5237\u65b0\u5230\u6587\u4ef6\u4e2d\u3002<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u8ffd\u52a0\u91cd\u5b9a\u5411\u539f\u7406<\/p>\n<\/blockquote>\n\n\n\n<p>\u8ffd\u52a0\u91cd\u5b9a\u5411\u548c\u8f93\u51fa\u91cd\u5b9a\u5411\u7684\u552f\u4e00\u533a\u522b\u5c31\u662f\uff0c\u8f93\u51fa\u91cd\u5b9a\u5411\u662f\u8986\u76d6\u5f0f\u8f93\u51fa\u6570\u636e\uff0c\u800c\u8ffd\u52a0\u91cd\u5b9a\u5411\u662f\u8ffd\u52a0\u5f0f\u8f93\u51fa\u6570\u636e\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012527935715.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u60f3\u8ba9\u672c\u5e94\u8be5\u8f93\u51fa\u5230\u201c\u663e\u793a\u5668\u6587\u4ef6\u201d\u7684\u6570\u636e\u8ffd\u52a0\u5f0f\u8f93\u51fa\u5230log.txt\u6587\u4ef6\u5f53\u4e2d\uff0c\u90a3\u4e48\u6211\u4eec\u5e94\u8be5\u5148\u5c06\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u7684\u6587\u4ef6\u5173\u95ed\uff0c\u7136\u540e\u518d\u4ee5\u8ffd\u52a0\u5f0f\u5199\u5165\u7684\u65b9\u5f0f\u6253\u5f00log.txt\u6587\u4ef6\uff0c\u8fd9\u6837\u4e00\u6765\uff0c\u6211\u4eec\u5c31\u5c06\u6570\u636e\u8ffd\u52a0\u91cd\u5b9a\u5411\u5230\u4e86\u6587\u4ef6log.txt\u5f53\u4e2d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    close(1);\n    int fd = open(\"log.txt\", O_WRONLY|O_APPEND|O_CREAT, 0666);\n    if(fd &lt; 0){\n        perror(\"open\");\n        return 1;\n    }\n    printf(\"hello Linux\\n\");\n    printf(\"hello Linux\\n\");\n    printf(\"hello Linux\\n\");\n    printf(\"hello Linux\\n\");\n    printf(\"hello Linux\\n\");\n    fflush(stdout);\n    close(fd);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7ed3\u679c\u540e\uff0c\u6211\u4eec\u53d1\u73b0\u5bf9\u5e94\u6570\u636e\u4fbf\u8ffd\u52a0\u5f0f\u8f93\u51fa\u5230\u4e86log.txt\u6587\u4ef6\u5f53\u4e2d\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012540448218.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u8f93\u5165\u91cd\u5b9a\u5411\u539f\u7406<\/p>\n<\/blockquote>\n\n\n\n<p>\u8f93\u5165\u91cd\u5b9a\u5411\u5c31\u662f\uff0c\u5c06\u6211\u4eec\u672c\u5e94\u8be5\u4ece\u4e00\u4e2a\u6587\u4ef6\u8bfb\u53d6\u6570\u636e\uff0c\u73b0\u5728\u91cd\u5b9a\u5411\u4e3a\u4ece\u53e6\u4e00\u4e2a\u6587\u4ef6\u8bfb\u53d6\u6570\u636e\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012559941521.png\" alt=\"img\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    close(0);\n    int fd = open(\"log.txt\", O_RDONLY | O_CREAT, 0666);\n    if (fd &lt; 0){\n        perror(\"open\");\n        return 1;\n    }\n    char str&#91;40];\n    while (scanf(\"%s\", str) != EOF){\n        printf(\"%s\\n\", str);\n    }\n    close(fd);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u7ed3\u679c\u540e\uff0c\u6211\u4eec\u53d1\u73b0scanf\u51fd\u6570\u5c06log.txt\u6587\u4ef6\u5f53\u4e2d\u7684\u6570\u636e\u90fd\u8bfb\u53d6\u51fa\u6765\u4e86\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012576910524.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u8bf4\u660e\u4e00\u4e0b\uff1a<\/p>\n\n\n\n<p>scanf\u51fd\u6570\u9ed8\u8ba4\u662f\u4ecestdin\u8bfb\u53d6\u6570\u636e\u7684\uff0c\u800cstdin\u6307\u5411\u7684struct file\u7ed3\u6784\u4f53\u4e2d\u5b58\u50a8\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a0\uff0c\u56e0\u6b64scanf\u5b9e\u9645\u4e0a\u5c31\u662f\u5411\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a0\u7684\u6587\u4ef6\u8bfb\u53d6\u6570\u636e\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u6807\u51c6\u8f93\u5165\u6d41\u548c\u6807\u51c6\u9519\u8bef\u6d41\u5bf9\u5e94\u7684\u90fd\u662f\u663e\u793a\u5668\uff0c\u5b83\u4eec\u7531\u4ec0\u4e48\u533a\u522b\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u6211\u4eec\u6765\u770b\u770b\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\uff0c\u4ee3\u7801\u4e2d\u5206\u522b\u5411\u6807\u51c6\u8f93\u51fa\u6d41\u548c\u6807\u51c6\u9519\u8bef\u6d41\u8f93\u51fa\u4e86\u4e24\u884c\u5b57\u7b26\u4e32\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\nint main()\n{\n    printf(\"hello printf\\n\"); \/\/stdout\n    perror(\"perror\"); \/\/stderr\n\n    fprintf(stdout, \"stdout:hello fprintf\\n\"); \/\/stdout\n    fprintf(stderr, \"stderr:hello fprintf\\n\"); \/\/stderr\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u76f4\u63a5\u8fd0\u884c\u7a0b\u5e8f\uff0c\u7ed3\u679c\u5f88\u663e\u7136\u5c31\u662f\u5728\u663e\u793a\u5668\u4e0a\u8f93\u51fa\u56db\u884c\u5b57\u7b26\u4e32\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012616023727.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u8fd9\u6837\u770b\u8d77\u6765\u6807\u51c6\u8f93\u51fa\u6d41\u548c\u6807\u51c6\u9519\u8bef\u6d41\u5e76\u6ca1\u6709\u533a\u522b\uff0c\u90fd\u662f\u5411\u663e\u793a\u5668\u8f93\u51fa\u6570\u636e\u3002\u4f46\u6211\u4eec\u82e5\u662f\u5c06\u7a0b\u5e8f\u8fd0\u884c\u7ed3\u679c\u91cd\u5b9a\u5411\u8f93\u51fa\u5230\u6587\u4ef6log.txt\u5f53\u4e2d\uff0c\u6211\u4eec\u4f1a\u53d1\u73b0log.txt\u6587\u4ef6\u5f53\u4e2d\u53ea\u6709\u5411\u6807\u51c6\u8f93\u51fa\u6d41\u8f93\u51fa\u7684\u4e24\u884c\u5b57\u7b26\u4e32\uff0c\u800c\u5411\u6807\u51c6\u9519\u8bef\u6d41\u8f93\u51fa\u7684\u4e24\u884c\u6570\u636e\u5e76\u6ca1\u6709\u91cd\u5b9a\u5411\u5230\u6587\u4ef6\u5f53\u4e2d\uff0c\u800c\u662f\u4ecd\u7136\u8f93\u51fa\u5230\u4e86\u663e\u793a\u5668\u4e0a\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167012633074430.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u5b9e\u9645\u4e0a\u6211\u4eec\u4f7f\u7528\u91cd\u5b9a\u5411\u65f6\uff0c\u91cd\u5b9a\u5411\u7684\u662f\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f1\u7684\u6807\u51c6\u8f93\u51fa\u6d41\uff0c\u800c\u5e76\u4e0d\u4f1a\u5bf9\u6587\u4ef6\u63cf\u8ff0\u7b26\u662f2\u7684\u6807\u51c6\u9519\u8bef\u6d41\u8fdb\u884c\u91cd\u5b9a\u5411\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">dup2<\/h3>\n\n\n\n<p>\u8981\u5b8c\u6210\u91cd\u5b9a\u5411\u6211\u4eec\u53ea\u9700\u8fdb\u884cfd_array\u6570\u7ec4\u5f53\u4e2d\u5143\u7d20\u7684\u62f7\u8d1d\u5373\u53ef\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u82e5\u662f\u5c06fd_array[3]\u4e2d\u7684\u5185\u5bb9\u62f7\u8d1d\u5230fd_array[1]\u4e2d\uff0c\u56e0\u4e3aC\u8bed\u8a00\u5f53\u4e2d\u7684stdout\u5c31\u662f\u5411\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u6587\u4ef6\u8f93\u51fa\u6570\u636e\uff0c\u90a3\u4e48\u6b64\u65f6\u6211\u4eec\u5c31\u5c06\u8f93\u51fa\u91cd\u5b9a\u5411\u5230\u4e86\u6587\u4ef6log.txt\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167013596759433.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u5728Linux\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u63d0\u4f9b\u4e86\u7cfb\u7edf\u63a5\u53e3dup2\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u8be5\u51fd\u6570\u5b8c\u6210\u91cd\u5b9a\u5411\u3002dup2\u7684\u51fd\u6570\u539f\u578b\u5982\u4e0b\uff1a<\/p>\n<\/blockquote>\n\n\n\n<p><code>int dup2(int oldfd,int newfd)<\/code><\/p>\n\n\n\n<p>\u51fd\u6570\u529f\u80fd\uff1adup2\u4f1a\u5c06fd_array[oldfd]\u7684\u5185\u5bb9\u62f7\u8d1d\u5230fd_array[newfd]\u5f53\u4e2d\uff0c\u5982\u679c\u6709\u5fc5\u8981\u7684\u8bdd\u6211\u4eec\u9700\u8981\u5148\u4f7f\u7528\u5173\u95ed\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3anewfd\u7684\u6587\u4ef6\u3002<\/p>\n\n\n\n<p>\u51fd\u6570\u8fd4\u56de\u503c\uff1adup2\u5982\u679c\u8c03\u7528\u6210\u529f\uff0c\u8fd4\u56denewfd\uff0c\u5426\u5219\u8fd4\u56de-1\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528dup2\u65f6\uff0c\u6211\u4eec\u9700\u8981\u6ce8\u610f\u4ee5\u4e0b\u4e24\u70b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5982\u679coldfd\u4e0d\u662f\u6709\u6548\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u5219dup2\u8c03\u7528\u5931\u8d25\uff0c\u5e76\u4e14\u6b64\u65f6\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3anewfd\u7684\u6587\u4ef6\u6ca1\u6709\u88ab\u5173\u95ed\u3002<\/li>\n\n\n\n<li>\u5982\u679coldfd\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u4f46\u662fnewfd\u548coldfd\u5177\u6709\u76f8\u540c\u7684\u503c\uff0c\u5219dup2\u4e0d\u505a\u4efb\u4f55\u64cd\u4f5c\uff0c\u8fd4\u56denewfd\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4f8b\u5982\uff0c\u6211\u4eec\u5c06\u6253\u5f00\u6587\u4ef6log.txt\u65f6\u83b7\u53d6\u5230\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u548c1\u4f20\u5165dup2\u51fd\u6570\uff0c\u90a3\u4e48dup2\u5c06\u4f1a\u628afd_arrya[fd]\u7684\u5185\u5bb9\u62f7\u8d1d\u5230fd_array[1]\u4e2d\uff0c\u5728\u4ee3\u7801\u4e2d\u6211\u4eec\u5411stdout\u8f93\u51fa\u6570\u636e\uff0c\u800cstdout\u662f\u5411\u6587\u4ef6\u63cf\u8ff0\u7b26\u4e3a1\u7684\u6587\u4ef6\u8f93\u51fa\u6570\u636e\uff0c\u56e0\u6b64\uff0c\u672c\u5e94\u8be5\u8f93\u51fa\u5230\u663e\u793a\u5668\u7684\u6570\u636e\u5c31\u4f1a\u91cd\u5b9a\u5411\u8f93\u51fa\u5230log.txt\u6587\u4ef6\u5f53\u4e2d\u3002<\/p>\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;sys\/stat.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;fcntl.h&gt;\nint main()\n{\n    int fd = open(\"log.txt\", O_WRONLY | O_CREAT, 0666);\n    if (fd &lt; 0){\n        perror(\"open\");\n        return 1;\n    }\n    close(1);\n    dup2(fd, 1);\n    printf(\"hello printf\\n\");\n    fprintf(stdout, \"hello fprintf\\n\");\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u4ee3\u7801\u8fd0\u884c\u540e\uff0c\u6211\u4eec\u5373\u53ef\u53d1\u73b0\u6570\u636e\u88ab\u8f93\u51fa\u5230\u4e86log.txt\u6587\u4ef6\u5f53\u4e2d\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167013779874936.png\" alt=\"img\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6dfb\u52a0\u91cd\u5b9a\u5411\u529f\u80fd\u5230minishell<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u8bf4\u660e\uff1a<\/strong> \u8be5minishell\u662f\u5728<a href=\"https:\/\/blog.csdn.net\/chenlong_cxy\/article\/details\/120444275\">\u8fdb\u7a0b\u63a7\u5236\u5f53\u4e2d\u5b9e\u73b0\u7684\u547d\u4ee4\u884c\u89e3\u91ca\u5668myshell<\/a>\u7684\u57fa\u7840\u4e0a\u5b9e\u73b0\u7684\u3002<\/p>\n<\/blockquote>\n\n\n\n<p>\u5728myshell\u5f53\u4e2d\u6dfb\u52a0\u91cd\u5b9a\u5411\u529f\u80fd\u7684\u6b65\u9aa4\u5927\u81f4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5bf9\u4e8e\u83b7\u53d6\u5230\u7684\u547d\u4ee4\u8fdb\u884c\u5224\u65ad\uff0c\u82e5\u547d\u4ee4\u884c\u5f53\u4e2d\u5305\u542b\u91cd\u5b9a\u5411\u7b26\u53f7>\u3001>>\u6216\u662f&lt;\uff0c\u5219\u8be5\u547d\u4ee4\u9700\u8981\u5904\u7406\u3002<\/li>\n\n\n\n<li>\u8bbe\u7f6etype\u53d8\u91cf\uff0ctype\u4e3a0\u8868\u793a\u547d\u4ee4\u5f53\u4e2d\u5305\u542b\u8f93\u51fa\u91cd\u5b9a\u5411\uff0ctype\u4e3a1\u8868\u793a\u547d\u4ee4\u5f53\u4e2d\u5305\u542b\u8ffd\u52a0\u91cd\u5b9a\u5411\uff0ctype\u4e3a2\u8868\u793a\u547d\u4ee4\u4e2d\u5305\u542b\u8f93\u5165\u91cd\u5b9a\u5411\u3002<\/li>\n\n\n\n<li>\u91cd\u5b9a\u5411\u7b26\u53f7\u540e\u9762\u7684\u5b57\u6bb5\u6807\u8bc6\u4e3a\u76ee\u6807\u6587\u4ef6\u540d\uff0c\u82e5type\u4e3a0\uff0c\u5219\u4ee5\u5199\u7684\u65b9\u5f0f\u6253\u5f00\u76ee\u6807\u6587\u4ef6\uff1b\u82e5type\u4e3a1\uff0c\u5219\u4ee5\u8ffd\u52a0\u7684\u65b9\u5f0f\u6253\u5f00\u76ee\u6807\u6587\u4ef6\uff1b\u82e5type\u4e3a2\uff0c\u5219\u4ee5\u8bfb\u7684\u65b9\u5f0f\u6253\u5f00\u76ee\u6807\u6587\u4ef6\u3002<\/li>\n\n\n\n<li>\u82e5type\u4e3a0\u62161\uff0c\u5219\u4f7f\u7528dup2\u63a5\u53e3\u5b9e\u73b0\u76ee\u6807\u6587\u4ef6\u4e0e\u6807\u51c6\u8f93\u51fa\u6d41\u7684\u91cd\u5b9a\u5411\uff1b\u82e5type\u503c\u4e3a2\uff0c\u5219\u4f7f\u7528dup2\u63a5\u53e3\u5b9e\u73b0\u76ee\u6807\u6587\u4ef6\u4e0e\u6807\u51c6\u8f93\u5165\u6d41\u7684\u91cd\u5b9a\u5411\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4ee3\u7801\u5b9e\u73b0\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;fcntl.h&gt;\n#include &lt;ctype.h&gt;\n#include &lt;pwd.h&gt;\n#include &lt;string.h&gt;\n#include &lt;unistd.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;sys\/types.h&gt;\n#include &lt;sys\/wait.h&gt;\n#define LEN 1024 \/\/\u547d\u4ee4\u6700\u5927\u957f\u5ea6\n#define NUM 32 \/\/\u547d\u4ee4\u62c6\u5206\u540e\u7684\u6700\u5927\u4e2a\u6570\nint main()\n{\n    int type = 0; \/\/0 &gt;, 1 &gt;&gt;, 2 &lt;\n    char cmd&#91;LEN]; \/\/\u5b58\u50a8\u547d\u4ee4\n    char* myargv&#91;NUM]; \/\/\u5b58\u50a8\u547d\u4ee4\u62c6\u5206\u540e\u7684\u7ed3\u679c\n    char hostname&#91;32]; \/\/\u4e3b\u673a\u540d\n    char pwd&#91;128]; \/\/\u5f53\u524d\u76ee\u5f55\n    while (1){\n        \/\/\u83b7\u53d6\u547d\u4ee4\u63d0\u793a\u4fe1\u606f\n        struct passwd* pass = getpwuid(getuid());\n        gethostname(hostname, sizeof(hostname)-1);\n        getcwd(pwd, sizeof(pwd)-1);\n        int len = strlen(pwd);\n        char* p = pwd + len - 1;\n        while (*p != '\/'){\n            p--;\n        }\n        p++;\n        \/\/\u6253\u5370\u547d\u4ee4\u63d0\u793a\u4fe1\u606f\n        printf(\"&#91;%s@%s %s]$ \", pass-&gt;pw_name, hostname, p);\n        \/\/\u8bfb\u53d6\u547d\u4ee4\n        fgets(cmd, LEN, stdin);\n        cmd&#91;strlen(cmd) - 1] = '\\0';\n\n        \/\/\u5b9e\u73b0\u91cd\u5b9a\u5411\u529f\u80fd\n        char* start = cmd;\n        while (*start != '\\0'){\n            if (*start == '&gt;'){\n                type = 0; \/\/\u9047\u5230\u4e00\u4e2a'&gt;'\uff0c\u8f93\u51fa\u91cd\u5b9a\u5411\n                *start = '\\0';\n                start++;\n                if (*start == '&gt;'){\n                    type = 1; \/\/\u9047\u5230\u7b2c\u4e8c\u4e2a'&gt;'\uff0c\u8ffd\u52a0\u91cd\u5b9a\u5411\n                    start++;\n                }\n                break;\n            }\n            if (*start == '&lt;'){\n                type = 2; \/\/\u9047\u5230'&lt;'\uff0c\u8f93\u5165\u91cd\u5b9a\u5411\n                *start = '\\0';\n                start++;\n                break;\n            }\n            start++;\n        }\n        if (*start != '\\0'){ \/\/start\u4f4d\u7f6e\u4e0d\u4e3a'\\0'\uff0c\u8bf4\u660e\u547d\u4ee4\u5305\u542b\u91cd\u5b9a\u5411\u5185\u5bb9\n            while (isspace(*start)) \/\/\u8df3\u8fc7\u91cd\u5b9a\u5411\u7b26\u53f7\u540e\u9762\u7684\u7a7a\u683c\n                start++;\n        }\n        else{\n            start = NULL; \/\/start\u8bbe\u7f6e\u4e3aNULL\uff0c\u6807\u8bc6\u547d\u4ee4\u5f53\u4e2d\u4e0d\u542b\u91cd\u5b9a\u5411\u5185\u5bb9\n        }\n\n        \/\/\u62c6\u5206\u547d\u4ee4\n        myargv&#91;0] = strtok(cmd, \" \");\n        int i = 1;\n        while (myargv&#91;i] = strtok(NULL, \" \")){\n            i++;\n        }\n        pid_t id = fork(); \/\/\u521b\u5efa\u5b50\u8fdb\u7a0b\u6267\u884c\u547d\u4ee4\n        if (id == 0){\n            \/\/child\n            if (start != NULL){\n                if (type == 0){ \/\/\u8f93\u51fa\u91cd\u5b9a\u5411\n                    int fd = open(start, O_WRONLY | O_CREAT | O_TRUNC, 0664); \/\/\u4ee5\u5199\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\uff08\u6e05\u7a7a\u539f\u6587\u4ef6\u5185\u5bb9\uff09\n                    if (fd &lt; 0){\n                        error(\"open\");\n                        exit(2);\n                    }\n                    close(1);\n                    dup2(fd, 1); \/\/\u91cd\u5b9a\u5411\n                }\n                else if (type == 1){ \/\/\u8ffd\u52a0\u91cd\u5b9a\u5411\n                    int fd = open(start, O_WRONLY | O_APPEND | O_CREAT, 0664); \/\/\u4ee5\u8ffd\u52a0\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\n                    if (fd &lt; 0){\n                        perror(\"open\");\n                        exit(2);\n                    }\n                    close(1);\n                    dup2(fd, 1); \/\/\u91cd\u5b9a\u5411\n                }\n                else{ \/\/\u8f93\u5165\u91cd\u5b9a\u5411\n                    int fd = open(start, O_RDONLY); \/\/\u4ee5\u8bfb\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\n                    if (fd &lt; 0){\n                        perror(\"open\");\n                        exit(2);\n                    }\n                    close(0);\n                    dup2(fd, 0); \/\/\u91cd\u5b9a\u5411\n                }\n            }\n\n            execvp(myargv&#91;0], myargv); \/\/child\u8fdb\u884c\u7a0b\u5e8f\u66ff\u6362\n            exit(1); \/\/\u66ff\u6362\u5931\u8d25\u7684\u9000\u51fa\u7801\u8bbe\u7f6e\u4e3a1\n        }\n        \/\/shell\n        int status = 0;\n        pid_t ret = waitpid(id, &amp;status, 0); \/\/shell\u7b49\u5f85child\u9000\u51fa\n        if (ret &gt; 0){\n            if (WIFEXITED(status))\n            {\n                printf(\"exit code:%d\\n\", WEXITSTATUS(status)); \/\/\u6253\u5370child\u7684\u9000\u51fa\u7801\n            }\n        }\n    }\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u6548\u679c\u5c55\u793a\uff1a<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/9e2e9d61bf884b03b0c2cf9bb43e22fe.gif\" alt=\"img\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FILE<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">FILE\u5f53\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26<\/h3>\n\n\n\n<p>\u56e0\u4e3a\u5e93\u51fd\u6570\u662f\u5bf9\u7cfb\u7edf\u8c03\u7528\u63a5\u53e3\u7684\u5c01\u88c5\uff0c\u672c\u8d28\u4e0a\u8bbf\u95ee\u6587\u4ef6\u90fd\u662f\u901a\u8fc7\u6587\u4ef6\u63cf\u8ff0\u7b26fd\u8fdb\u884c\u8bbf\u95ee\u7684\uff0c\u6240\u4ee5C\u5e93\u5f53\u4e2d\u7684FILE\u7ed3\u6784\u4f53\u5185\u90e8\u5fc5\u5b9a\u5c01\u88c5\u4e86\u6587\u4ef6\u63cf\u8ff0\u7b26fd\u3002<\/p>\n\n\n\n<p>\u9996\u5148\uff0c\u6211\u4eec\u5728<code>\/usr\/include\/stdio.h<\/code>\u5934\u6587\u4ef6\u4e2d\u53ef\u4ee5\u770b\u5230\u4e0b\u9762\u8fd9\u53e5\u4ee3\u7801\uff0c\u4e5f\u5c31\u662f\u8bf4FILE\u5b9e\u9645\u4e0a\u5c31\u662f<code>struct _IO_FILE<\/code>\u7ed3\u6784\u4f53\u7684\u4e00\u4e2a\u522b\u540d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>typedef struct _IO_FILE FILE;<\/code><\/pre>\n\n\n\n<p>\u800c\u6211\u4eec\u5728<code>\/usr\/include\/libio.h<\/code>\u5934\u6587\u4ef6\u4e2d\u53ef\u4ee5\u627e\u5230<code>struct _IO_FILE<\/code>\u7ed3\u6784\u4f53\u7684\u5b9a\u4e49\uff0c\u5728\u8be5\u7ed3\u6784\u4f53\u7684\u4f17\u591a\u6210\u5458\u5f53\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u4e00\u4e2a\u540d\u4e3a<code>_fileno<\/code>\u7684\u6210\u5458\uff0c\u8fd9\u4e2a\u6210\u5458\u5b9e\u9645\u4e0a\u5c31\u662f\u5c01\u88c5\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct _IO_FILE {\n    int _flags;       \/* High-order word is _IO_MAGIC; rest is flags. *\/\n#define _IO_file_flags _flags\n\n    \/\/\u7f13\u51b2\u533a\u76f8\u5173\n    \/* The following pointers correspond to the C++ streambuf protocol. *\/\n    \/* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. *\/\n    char* _IO_read_ptr;   \/* Current read pointer *\/\n    char* _IO_read_end;   \/* End of get area. *\/\n    char* _IO_read_base;  \/* Start of putback+get area. *\/\n    char* _IO_write_base; \/* Start of put area. *\/\n    char* _IO_write_ptr;  \/* Current put pointer. *\/\n    char* _IO_write_end;  \/* End of put area. *\/\n    char* _IO_buf_base;   \/* Start of reserve area. *\/\n    char* _IO_buf_end;    \/* End of reserve area. *\/\n    \/* The following fields are used to support backing up and undo. *\/\n    char *_IO_save_base; \/* Pointer to start of non-current get area. *\/\n    char *_IO_backup_base;  \/* Pointer to first valid character of backup area *\/\n    char *_IO_save_end; \/* Pointer to end of non-current get area. *\/\n\n    struct _IO_marker *_markers;\n\n    struct _IO_FILE *_chain;\n\n    int _fileno; \/\/\u5c01\u88c5\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\n#if 0\n    int _blksize;\n#else\n    int _flags2;\n#endif\n    _IO_off_t _old_offset; \/* This used to be _offset but it's too small.  *\/\n\n#define __HAVE_COLUMN \/* temporary *\/\n    \/* 1+column number of pbase(); 0 is unknown. *\/\n    unsigned short _cur_column;\n    signed char _vtable_offset;\n    char _shortbuf&#91;1];\n\n    \/*  char* _save_gptr;  char* _save_egptr; *\/\n\n    _IO_lock_t *_lock;\n#ifdef _IO_USE_OLD_IO_FILE\n};<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u73b0\u5728\u6211\u4eec\u518d\u6765\u7406\u89e3\u4e00\u4e0bC\u8bed\u8a00\u5f53\u4e2d\u7684fopen\u51fd\u6570\u7a76\u7adf\u5728\u505a\u4ec0\u4e48\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>fopen\u51fd\u6570\u5728\u4e0a\u5c42\u4e3a\u7528\u6237\u7533\u8bf7FILE\u7ed3\u6784\u4f53\u53d8\u91cf\uff0c\u5e76\u8fd4\u56de\u8be5\u7ed3\u6784\u4f53\u7684\u5730\u5740\uff08FILE*\uff09\uff0c\u5728\u5e95\u5c42\u901a\u8fc7\u7cfb\u7edf\u63a5\u53e3open\u6253\u5f00\u5bf9\u5e94\u7684\u6587\u4ef6\uff0c\u5f97\u5230\u6587\u4ef6\u63cf\u8ff0\u7b26fd\uff0c\u5e76\u628afd\u586b\u5145\u5230FILE\u7ed3\u6784\u4f53\u5f53\u4e2d\u7684<code>_fileno<\/code>\u53d8\u91cf\u4e2d\uff0c\u81f3\u6b64\u4fbf\u5b8c\u6210\u4e86\u6587\u4ef6\u7684\u6253\u5f00\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p>\u800cC\u8bed\u8a00\u5f53\u4e2d\u7684\u5176\u4ed6\u6587\u4ef6\u64cd\u4f5c\u51fd\u6570\uff0c\u6bd4\u5982fread\u3001fwrite\u3001fputs\u3001fgets\u7b49\uff0c\u90fd\u662f\u5148\u6839\u636e\u6211\u4eec\u4f20\u5165\u7684\u6587\u4ef6\u6307\u9488\u627e\u5230\u5bf9\u5e94\u7684FILE\u7ed3\u6784\u4f53\uff0c\u7136\u540e\u5728FILE\u7ed3\u6784\u4f53\u5f53\u4e2d\u627e\u5230\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u6700\u540e\u901a\u8fc7\u6587\u4ef6\u63cf\u8ff0\u7b26\u5bf9\u6587\u4ef6\u8fdb\u884c\u7684\u4e00\u7cfb\u5217\u64cd\u4f5c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">FILE\u5f53\u4e2d\u7684\u7f13\u5b58\u533a<\/h3>\n\n\n\n<p>\u6211\u4eec\u6765\u770b\u770b\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\uff0c\u4ee3\u7801\u5f53\u4e2d\u5206\u522b\u7528\u4e86\u4e24\u4e2aC\u5e93\u51fd\u6570\u548c\u4e00\u4e2a\u7cfb\u7edf\u63a5\u53e3\u5411\u663e\u793a\u5668\u8f93\u51fa\u5185\u5bb9\uff0c\u5728\u4ee3\u7801\u6700\u540e\u8fd8\u8c03\u7528\u4e86fork\u51fd\u6570\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;unistd.h&gt;\nint main()\n{\n    \/\/c\n    printf(\"hello printf\\n\");\n    fputs(\"hello fputs\\n\", stdout);\n    \/\/system\n    write(1, \"hello write\\n\", 12);\n    fork();\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>\u8fd0\u884c\u8be5\u7a0b\u5e8f\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230printf\u3001fputs\u548cwrite\u51fd\u6570\u90fd\u6210\u529f\u5c06\u5bf9\u5e94\u5185\u5bb9\u8f93\u51fa\u5230\u4e86\u663e\u793a\u5668\u4e0a\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167015837685841.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u4f46\u662f\uff0c\u5f53\u6211\u4eec\u5c06\u7a0b\u5e8f\u7684\u7ed3\u679c\u91cd\u5b9a\u5411\u5230log.txt\u6587\u4ef6\u5f53\u4e2d\u540e\uff0c\u6211\u4eec\u53d1\u73b0\u6587\u4ef6\u5f53\u4e2d\u7684\u5185\u5bb9\u4e0e\u6211\u4eec\u76f4\u63a5\u6253\u5370\u8f93\u51fa\u5230\u663e\u793a\u5668\u7684\u5185\u5bb9\u662f\u4e0d\u4e00\u6837\u7684\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167015869863744.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u90a3\u4e3a\u4ec0\u4e48C\u5e93\u51fd\u6570\u6253\u5370\u7684\u5185\u5bb9\u91cd\u5b9a\u5411\u5230\u6587\u4ef6\u540e\u5c31\u53d8\u6210\u4e86\u4e24\u4efd\uff0c\u800c\u7cfb\u7edf\u63a5\u53e3\u6253\u5370\u7684\u5185\u5bb9\u8fd8\u662f\u539f\u6765\u7684\u4e00\u4efd\u5462\uff1f<\/p>\n\n\n\n<p>\u9996\u5148\u6211\u4eec\u5e94\u8be5\u77e5\u9053\u7684\u662f\uff0c\u7f13\u51b2\u7684\u65b9\u5f0f\u6709\u4ee5\u4e0b\u4e09\u79cd\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u65e0\u7f13\u51b2\u3002<\/li>\n\n\n\n<li>\u884c\u7f13\u51b2\u3002\uff08\u5e38\u89c1\u7684\u5bf9\u663e\u793a\u5668\u8fdb\u884c\u5237\u65b0\u6570\u636e\uff09<\/li>\n\n\n\n<li>\u5168\u7f13\u51b2\u3002\uff08\u5e38\u89c1\u7684\u5bf9\u78c1\u76d8\u6587\u4ef6\u5199\u5165\u6570\u636e\uff09<\/li>\n<\/ol>\n\n\n\n<p>\u5f53\u6211\u4eec\u76f4\u63a5\u6267\u884c\u53ef\u6267\u884c\u7a0b\u5e8f\uff0c\u5c06\u6570\u636e\u6253\u5370\u5230\u663e\u793a\u5668\u65f6\u6240\u91c7\u7528\u7684\u5c31\u662f\u884c\u7f13\u51b2\uff0c\u56e0\u4e3a\u4ee3\u7801\u5f53\u4e2d\u6bcf\u53e5\u8bdd\u540e\u9762\u90fd\u6709\\n\uff0c\u6240\u4ee5\u5f53\u6211\u4eec\u6267\u884c\u5b8c\u5bf9\u5e94\u4ee3\u7801\u540e\u5c31\u7acb\u5373\u5c06\u6570\u636e\u5237\u65b0\u5230\u4e86\u663e\u793a\u5668\u4e0a\u3002<\/p>\n\n\n\n<p>\u800c\u5f53\u6211\u4eec\u5c06\u8fd0\u884c\u7ed3\u679c\u91cd\u5b9a\u5411\u5230log.txt\u6587\u4ef6\u65f6\uff0c\u6570\u636e\u7684\u5237\u65b0\u7b56\u7565\u5c31\u53d8\u4e3a\u4e86\u5168\u7f13\u51b2\uff0c\u6b64\u65f6\u6211\u4eec\u4f7f\u7528printf\u548cfputs\u51fd\u6570\u6253\u5370\u7684\u6570\u636e\u90fd\u6253\u5370\u5230\u4e86C\u8bed\u8a00\u81ea\u5e26\u7684\u7f13\u51b2\u533a\u5f53\u4e2d\uff0c\u4e4b\u540e\u5f53\u6211\u4eec\u4f7f\u7528fork\u51fd\u6570\u521b\u5efa\u5b50\u8fdb\u7a0b\u65f6\uff0c\u7531\u4e8e\u8fdb\u7a0b\u95f4\u5177\u6709\u72ec\u7acb\u6027\uff0c\u800c\u4e4b\u540e\u5f53\u7236\u8fdb\u7a0b\u6216\u662f\u5b50\u8fdb\u7a0b\u5bf9\u8981\u5237\u65b0\u7f13\u51b2\u533a\u5185\u5bb9\u65f6\uff0c\u672c\u8d28\u5c31\u662f\u5bf9\u7236\u5b50\u8fdb\u7a0b\u5171\u4eab\u7684\u6570\u636e\u8fdb\u884c\u4e86\u4fee\u6539\uff0c\u6b64\u65f6\u5c31\u9700\u8981\u5bf9\u6570\u636e\u8fdb\u884c\u5199\u65f6\u62f7\u8d1d\uff0c\u81f3\u6b64\u7f13\u51b2\u533a\u5f53\u4e2d\u7684\u6570\u636e\u5c31\u53d8\u6210\u4e86\u4e24\u4efd\uff0c\u4e00\u4efd\u7236\u8fdb\u7a0b\u7684\uff0c\u4e00\u4efd\u5b50\u8fdb\u7a0b\u7684\uff0c\u6240\u4ee5\u91cd\u5b9a\u5411\u5230log.txt\u6587\u4ef6\u5f53\u4e2dprintf\u548cputs\u51fd\u6570\u6253\u5370\u7684\u6570\u636e\u5c31\u6709\u4e24\u4efd\u3002\u4f46\u7531\u4e8ewrite\u51fd\u6570\u662f\u7cfb\u7edf\u63a5\u53e3\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06write\u51fd\u6570\u770b\u4f5c\u662f\u6ca1\u6709\u7f13\u51b2\u533a\u7684\uff0c\u56e0\u6b64write\u51fd\u6570\u6253\u5370\u7684\u6570\u636e\u5c31\u53ea\u6253\u5370\u4e86\u4e00\u4efd\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u8fd9\u4e2a\u7f13\u51b2\u533a\u662f\u8c01\u63d0\u4f9b\u7684\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u5b9e\u9645\u4e0a\u8fd9\u4e2a\u7f13\u51b2\u533a\u662fC\u8bed\u8a00\u81ea\u5e26\u7684\uff0c\u5982\u679c\u8bf4\u8fd9\u4e2a\u7f13\u51b2\u533a\u662f\u64cd\u4f5c\u7cfb\u7edf\u63d0\u4f9b\u7684\uff0c\u90a3\u4e48printf\u3001fputs\u548cwrite\u51fd\u6570\u6253\u5370\u7684\u6570\u636e\u91cd\u5b9a\u5411\u5230\u6587\u4ef6\u540e\u90fd\u5e94\u8be5\u6253\u5370\u4e24\u6b21\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u8fd9\u4e2a\u7f13\u51b2\u533a\u5728\u54ea\u91cc\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u6211\u4eec\u5e38\u8bf4printf\u662f\u5c06\u6570\u636e\u6253\u5370\u5230stdout\u91cc\u9762\uff0c\u800cstdout\u5c31\u662f\u4e00\u4e2a<code>FILE*<\/code>\u7684\u6307\u9488\uff0c\u5728FILE\u7ed3\u6784\u4f53\u5f53\u4e2d\u8fd8\u6709\u4e00\u5927\u90e8\u5206\u6210\u5458\u662f\u7528\u4e8e\u8bb0\u5f55\u7f13\u51b2\u533a\u76f8\u5173\u7684\u4fe1\u606f\u7684\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\u7f13\u51b2\u533a\u76f8\u5173\n\/* The following pointers correspond to the C++ streambuf protocol. *\/\n\/* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. *\/\nchar* _IO_read_ptr;   \/* Current read pointer *\/\nchar* _IO_read_end;   \/* End of get area. *\/\nchar* _IO_read_base;  \/* Start of putback+get area. *\/\nchar* _IO_write_base; \/* Start of put area. *\/\nchar* _IO_write_ptr;  \/* Current put pointer. *\/\nchar* _IO_write_end;  \/* End of put area. *\/\nchar* _IO_buf_base;   \/* Start of reserve area. *\/\nchar* _IO_buf_end;    \/* End of reserve area. *\/\n\/* The following fields are used to support backing up and undo. *\/\nchar *_IO_save_base; \/* Pointer to start of non-current get area. *\/\nchar *_IO_backup_base;  \/* Pointer to first valid character of backup area *\/\nchar *_IO_save_end; \/* Pointer to end of non-current get area. *\/<\/code><\/pre>\n\n\n\n<p>\u4e5f\u5c31\u662f\u8bf4\uff0c\u8fd9\u91cc\u7684\u7f13\u51b2\u533a\u662f\u7531C\u8bed\u8a00\u63d0\u4f9b\uff0c\u5728FILE\u7ed3\u6784\u4f53\u5f53\u4e2d\u8fdb\u884c\u7ef4\u62a4\u7684\uff0cFILE\u7ed3\u6784\u4f53\u5f53\u4e2d\u4e0d\u4ec5\u4fdd\u5b58\u4e86\u5bf9\u5e94\u6587\u4ef6\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u8fd8\u4fdd\u5b58\u4e86\u7528\u6237\u7f13\u51b2\u533a\u7684\u76f8\u5173\u4fe1\u606f\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u64cd\u4f5c\u7cfb\u7edf\u6709\u7f13\u51b2\u533a\u5417\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u64cd\u4f5c\u7cfb\u7edf\u5b9e\u9645\u4e0a\u4e5f\u662f\u6709\u7f13\u51b2\u533a\u7684\uff0c\u5f53\u6211\u4eec\u5237\u65b0\u7528\u6237\u7f13\u51b2\u533a\u7684\u6570\u636e\u65f6\uff0c\u5e76\u4e0d\u662f\u76f4\u63a5\u5c06\u7528\u6237\u7f13\u51b2\u533a\u7684\u6570\u636e\u5237\u65b0\u5230\u78c1\u76d8\u6216\u662f\u663e\u793a\u5668\u4e0b\uff0c\u800c\u662f\u5148\u5c06\u6570\u636e\u5237\u65b0\u5230\u64cd\u4f5c\u7cfb\u7edf\u7f13\u51b2\u533a\uff0c\u7136\u540e\u518d\u7531\u64cd\u4f5c\u7cfb\u7edf\u5c06\u6570\u636e\u5237\u65b0\u5230\u78c1\u76d8\u6216\u662f\u663e\u793a\u5668\u4e0a\u3002\uff08\u64cd\u4f5c\u7cfb\u7edf\u6709\u81ea\u5df1\u7684\u5237\u65b0\u673a\u5236\uff0c\u6211\u4eec\u4e0d\u5fc5\u5173\u7cfb\u64cd\u4f5c\u7cfb\u7edf\u7f13\u51b2\u533a\u7684\u5237\u65b0\u89c4\u5219\uff09 <img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167016022031450.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u56e0\u4e3a\u64cd\u4f5c\u7cfb\u7edf\u662f\u8fdb\u884c\u8f6f\u786c\u4ef6\u8d44\u6e90\u7ba1\u7406\u7684\u8f6f\u4ef6\uff0c\u6839\u636e\u4e0b\u9762\u7684\u5c42\u72b6\u7ed3\u6784\u56fe\uff0c\u7528\u6237\u533a\u7684\u6570\u636e\u8981\u5237\u65b0\u5230\u5177\u4f53\u5916\u8bbe\u5fc5\u987b\u7ecf\u8fc7\u64cd\u4f5c\u7cfb\u7edf\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167016088392153.png\" alt=\"img\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7406\u89e3\u6587\u4ef6\u7cfb\u7edf<\/h2>\n\n\n\n<p>\u6211\u4eec\u77e5\u9053\u6587\u4ef6\u53ef\u4ee5\u5206\u4e3a\u78c1\u76d8\u6587\u4ef6\u548c\u5185\u5b58\u6587\u4ef6\uff0c\u5185\u5b58\u6587\u4ef6\u524d\u9762\u6211\u4eec\u5df2\u7ecf\u8c08\u8fc7\u4e86\uff0c\u4e0b\u9762\u6211\u4eec\u6765\u8c08\u8c08\u78c1\u76d8\u6587\u4ef6\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u521d\u59cbinode<\/h3>\n\n\n\n<p>\u78c1\u76d8\u6587\u4ef6\u7531\u4e24\u90e8\u5206\u6784\u6210\uff0c\u5206\u522b\u662f\u6587\u4ef6\u5185\u5bb9\u548c\u6587\u4ef6\u5c5e\u6027\u3002\u6587\u4ef6\u5185\u5bb9\u5c31\u662f\u6587\u4ef6\u5f53\u4e2d\u5b58\u50a8\u7684\u6570\u636e\uff0c\u6587\u4ef6\u5c5e\u6027\u5c31\u662f\u6587\u4ef6\u7684\u4e00\u4e9b\u57fa\u672c\u4fe1\u606f\uff0c\u4f8b\u5982\u6587\u4ef6\u540d\u3001\u6587\u4ef6\u5927\u5c0f\u4ee5\u53ca\u6587\u4ef6\u521b\u5efa\u65f6\u95f4\u7b49\u4fe1\u606f\u90fd\u662f\u6587\u4ef6\u5c5e\u6027\uff0c\u6587\u4ef6\u5c5e\u6027\u53c8\u88ab\u79f0\u4e3a\u5143\u4fe1\u606f\u3002<\/p>\n\n\n\n<p>\u5728\u547d\u4ee4\u884c\u5f53\u4e2d\u8f93\u5165<code>ls -l<\/code>\uff0c\u5373\u53ef\u663e\u793a\u5f53\u524d\u76ee\u5f55\u4e0b\u5404\u6587\u4ef6\u7684\u5c5e\u6027\u4fe1\u606f\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020222668656.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u5176\u4e2d\uff0c\u5404\u5217\u4fe1\u606f\u6240\u5bf9\u5e94\u7684\u6587\u4ef6\u5c5e\u6027\u5982\u4e0b\uff1a<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020227045059.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u5728Linux\u64cd\u4f5c\u7cfb\u7edf\u4e2d\uff0c\u6587\u4ef6\u7684\u5143\u4fe1\u606f\u548c\u5185\u5bb9\u662f\u5206\u79bb\u5b58\u50a8\u7684\uff0c\u5176\u4e2d\u4fdd\u5b58\u5143\u4fe1\u606f\u7684\u7ed3\u6784\u79f0\u4e4b\u4e3ainode\uff0c\u56e0\u4e3a\u7cfb\u7edf\u5f53\u4e2d\u53ef\u80fd\u5b58\u5728\u5927\u91cf\u7684\u6587\u4ef6\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u7ed9\u6bcf\u4e2a\u6587\u4ef6\u7684\u5c5e\u6027\u96c6\u8d77\u4e00\u4e2a\u552f\u4e00\u7684\u7f16\u53f7\uff0c\u5373inode\u53f7\u3002<br>\u4e5f\u5c31\u662f\u8bf4\uff0cinode\u662f\u4e00\u4e2a\u6587\u4ef6\u7684\u5c5e\u6027\u96c6\u5408\uff0cLinux\u4e2d\u51e0\u4e4e\u6bcf\u4e2a\u6587\u4ef6\u90fd\u6709\u4e00\u4e2ainode\uff0c\u4e3a\u4e86\u533a\u5206\u7cfb\u7edf\u5f53\u4e2d\u5927\u91cf\u7684inode\uff0c\u6211\u4eec\u4e3a\u6bcf\u4e2ainode\u8bbe\u7f6e\u4e86inode\u7f16\u53f7\u3002<\/p>\n\n\n\n<p>\u5728\u547d\u4ee4\u884c\u5f53\u4e2d\u8f93\u5165<code>ls -i<\/code>\uff0c\u5373\u53ef\u663e\u793a\u5f53\u524d\u76ee\u5f55\u4e0b\u5404\u6587\u4ef6\u7684inode\u7f16\u53f7\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020240284562.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u65e0\u8bba\u662f\u6587\u4ef6\u5185\u5bb9\u8fd8\u662f\u6587\u4ef6\u5c5e\u6027\uff0c\u5b83\u4eec\u90fd\u662f\u5b58\u50a8\u5728\u78c1\u76d8\u5f53\u4e2d\u7684\u3002<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\u78c1\u76d8\u7684\u6982\u5ff5<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u4ec0\u4e48\u662f\u78c1\u76d8\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u78c1\u76d8\u662f\u4e00\u79cd\u6c38\u4e45\u6027\u5b58\u50a8\u4ecb\u8d28\uff0c\u5728\u8ba1\u7b97\u673a\u4e2d\uff0c\u78c1\u76d8\u51e0\u4e4e\u662f\u552f\u4e00\u7684\u673a\u68b0\u8bbe\u5907\u3002\u4e0e\u78c1\u76d8\u76f8\u5bf9\u5e94\u7684\u5c31\u662f\u5185\u5b58\uff0c\u5185\u5b58\u662f\u6389\u7535\u6613\u5931\u5b58\u50a8\u4ecb\u8d28\uff0c\u76ee\u524d\u6240\u6709\u7684\u666e\u901a\u6587\u4ef6\u90fd\u662f\u5728\u78c1\u76d8\u4e2d\u5b58\u50a8\u7684\u3002<\/p>\n\n\n\n<p>\u78c1\u76d8\u5728\u51af\u8bfa\u4f9d\u66fc\u4f53\u7cfb\u7ed3\u6784\u5f53\u4e2d\u65e2\u53ef\u4ee5\u5145\u5f53\u8f93\u5165\u8bbe\u5907\uff0c\u53c8\u53ef\u4ee5\u5145\u5f53\u8f93\u51fa\u8bbe\u5907\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020257995765.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u78c1\u76d8\u7684\u57fa\u672c\u6982\u5ff5<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020261590568.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020261590568.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u78c1\u76d8\u7684\u5bfb\u627e\u65b9\u6848<\/p>\n<\/blockquote>\n\n\n\n<p>\u5bf9\u78c1\u76d8\u8fdb\u884c\u8bfb\u5199\u64cd\u4f5c\u65f6\uff0c\u4e00\u822c\u6709\u4ee5\u4e0b\u51e0\u4e2a\u6b65\u9aa4\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u786e\u5b9a\u8bfb\u5199\u4fe1\u606f\u5728\u78c1\u76d8\u7684\u54ea\u4e2a\u76d8\u9762\u3002<\/li>\n\n\n\n<li>\u786e\u5b9a\u8bfb\u5199\u4fe1\u606f\u5728\u78c1\u76d8\u7684\u54ea\u4e2a\u67f1\u9762\u3002<\/li>\n\n\n\n<li>\u786e\u5b9a\u8bfb\u5199\u4fe1\u606f\u5728\u78c1\u76d8\u7684\u54ea\u4e2a\u6247\u533a\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u901a\u8fc7\u4ee5\u4e0a\u4e09\u4e2a\u6b65\u9aa4\uff0c\u6700\u7ec8\u786e\u5b9a\u4fe1\u606f\u5728\u78c1\u76d8\u7684\u8bfb\u5199\u4f4d\u7f6e\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u78c1\u76d8\u5206\u533a\u4e0e\u683c\u5f0f\u5316\u4ecb\u7ecd<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u7ebf\u6027\u5b58\u50a8\u4ecb\u8d28<\/p>\n<\/blockquote>\n\n\n\n<p>\u7406\u89e3\u6587\u4ef6\u7cfb\u7edf\uff0c\u9996\u5148\u6211\u4eec\u5fc5\u987b\u5c06\u78c1\u76d8\u60f3\u8c61\u6210\u4e00\u4e2a\u7ebf\u6027\u5b58\u50a8\u4ecb\u8d28\uff0c\u60f3\u60f3\u78c1\u5e26\uff0c\u5f53\u78c1\u5e26\u88ab\u5377\u8d77\u6765\u65f6\uff0c\u5176\u5c31\u50cf\u78c1\u76d8\u4e00\u6837\u662f\u5706\u5f62\u7684\uff0c\u4f46\u5f53\u6211\u4eec\u628a\u78c1\u5e26\u62c9\u76f4\u540e\uff0c\u5176\u5c31\u662f\u7ebf\u6027\u7684\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020327993071.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u78c1\u76d8\u5206\u533a<\/p>\n<\/blockquote>\n\n\n\n<p>\u78c1\u76d8\u901a\u5e38\u88ab\u79f0\u4e3a\u5757\u8bbe\u5907\uff0c\u4e00\u822c\u4ee5\u6247\u533a\u4e3a\u5355\u4f4d\uff0c\u4e00\u4e2a\u6247\u533a\u7684\u5927\u5c0f\u901a\u5e38\u4e3a512\u5b57\u8282\u3002\u6211\u4eec\u82e5\u4ee5\u5927\u5c0f\u4e3a512G\u7684\u78c1\u76d8\u4e3a\u4f8b\uff0c\u8be5\u78c1\u76d8\u5c31\u53ef\u88ab\u5206\u4e3a\u5341\u4ebf\u591a\u4e2a\u6247\u533a\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020370781174.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u8ba1\u7b97\u673a\u4e3a\u4e86\u66f4\u597d\u7684\u7ba1\u7406\u78c1\u76d8\uff0c\u4e8e\u662f\u5bf9\u78c1\u76d8\u8fdb\u884c\u4e86\u5206\u533a\u3002\u78c1\u76d8\u5206\u533a\u5c31\u662f\u4f7f\u7528\u5206\u533a\u7f16\u8f91\u5668\u5728\u78c1\u76d8\u4e0a\u5212\u5206\u51e0\u4e2a\u903b\u8f91\u90e8\u5206\uff0c\u76d8\u7247\u4e00\u65e6\u5212\u5206\u6210\u6570\u4e2a\u5206\u533a\uff0c\u4e0d\u540c\u7684\u76ee\u5f55\u548c\u6587\u4ef6\u5c31\u53ef\u4ee5\u5b58\u50a8\u8fdb\u4e0d\u540c\u7684\u5206\u533a\uff0c\u5206\u533a\u8d8a\u591a\uff0c\u5c31\u53ef\u4ee5\u5c06\u6587\u4ef6\u7684\u6027\u8d28\u533a\u5206\u5f97\u8d8a\u7ec6\uff0c\u6309\u7167\u66f4\u4e3a\u7ec6\u5206\u7684\u6027\u8d28\uff0c\u5b58\u50a8\u5728\u4e0d\u540c\u7684\u5730\u65b9\u4ee5\u7ba1\u7406\u6587\u4ef6\uff0c\u4f8b\u5982\u5728Windows\u4e0b\u78c1\u76d8\u4e00\u822c\u88ab\u5206\u4e3aC\u76d8\u548cD\u76d8\u4e24\u4e2a\u533a\u57df\u3002<\/p>\n\n\n\n<p>\u5728Linux\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u770b\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u67e5\u770b\u6211\u4eec\u78c1\u76d8\u7684\u5206\u533a\u4fe1\u606f\uff1a<\/p>\n\n\n\n<p><code>ls \/dev\/vda* -l<\/code><img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020410446477.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u78c1\u76d8\u683c\u5f0f\u5316<\/p>\n<\/blockquote>\n\n\n\n<p>\u5f53\u78c1\u76d8\u5b8c\u6210\u5206\u533a\u540e\uff0c\u6211\u4eec\u8fd8\u9700\u8981\u5bf9\u78c1\u76d8\u8fdb\u884c\u683c\u5f0f\u5316\u3002\u78c1\u76d8\u683c\u5f0f\u5316\u5c31\u662f\u5bf9\u78c1\u76d8\u4e2d\u7684\u5206\u533a\u8fdb\u884c\u521d\u59cb\u5316\u7684\u4e00\u79cd\u64cd\u4f5c\uff0c\u8fd9\u79cd\u64cd\u4f5c\u901a\u5e38\u4f1a\u5bfc\u81f4\u73b0\u6709\u7684\u78c1\u76d8\u6216\u5206\u533a\u4e2d\u6240\u6709\u7684\u6587\u4ef6\u88ab\u6e05\u9664\u3002<br>\u7b80\u5355\u6765\u8bf4\uff0c\u78c1\u76d8\u683c\u5f0f\u5316\u5c31\u662f\u5bf9\u5206\u533a\u540e\u7684\u5404\u4e2a\u533a\u57df\u5199\u5165\u5bf9\u5e94\u7684\u7ba1\u7406\u4fe1\u606f\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020427506580.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u5176\u4e2d\uff0c\u5199\u5165\u7684\u7ba1\u7406\u4fe1\u606f\u662f\u4ec0\u4e48\u662f\u7531\u6587\u4ef6\u7cfb\u7edf\u51b3\u5b9a\u7684\uff0c\u4e0d\u540c\u7684\u6587\u4ef6\u7cfb\u7edf\u683c\u5f0f\u5316\u65f6\u5199\u5165\u7684\u7ba1\u7406\u4fe1\u606f\u662f\u4e0d\u540c\u7684\uff0c\u5e38\u89c1\u7684\u6587\u4ef6\u7cfb\u7edf\u6709EXT2\u3001EXT3\u3001XFS\u3001NTFS\u7b49\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">EXT2\u6587\u4ef6\u7cfb\u7edf\u7684\u5b58\u50a8\u65b9\u6848<\/h3>\n\n\n\n<p>\u8ba1\u7b97\u673a\u4e3a\u4e86\u66f4\u597d\u7684\u7ba1\u7406\u78c1\u76d8\uff0c\u4f1a\u5bf9\u78c1\u76d8\u8fdb\u884c\u5206\u533a\u3002\u800c\u5bf9\u4e8e\u6bcf\u4e00\u4e2a\u5206\u533a\u6765\u8bf4\uff0c\u5206\u533a\u7684\u5934\u90e8\u4f1a\u5305\u62ec\u4e00\u4e2a\u542f\u52a8\u5757\uff08Boot Block\uff09\uff0c\u5bf9\u4e8e\u8be5\u5206\u533a\u7684\u5176\u4f59\u533a\u57df\uff0cEXT2\u6587\u4ef6\u7cfb\u7edf\u4f1a\u6839\u636e\u5206\u533a\u7684\u5927\u5c0f\u5c06\u5176\u5212\u5206\u4e3a\u4e00\u4e2a\u4e2a\u5757\u7ec4\uff08Block Group\uff09\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020461640086.png\" alt=\"img\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u542f\u52a8\u5757\u7684\u5927\u5c0f\u662f\u786e\u5b9a\u7684\uff0c\u800c\u5757\u7ec4\u7684\u5927\u5c0f\u662f\u7531\u683c\u5f0f\u5316\u7684\u65f6\u5019\u786e\u5b9a\u7684\uff0c\u5e76\u4e14\u4e0d\u53ef\u4ee5\u66f4\u6539<\/p>\n<\/blockquote>\n\n\n\n<p>\u5176\u6b21\uff0c\u6bcf\u4e2a\u5757\u7ec4\u90fd\u6709\u7740\u76f8\u540c\u7684\u7ec4\u6210\u7ed3\u6784\uff0c\u6bcf\u4e2a\u5757\u7ec4\u90fd\u7531\u8d85\u7ea7\u5757\uff08Super Block\uff09\u3001\u5757\u7ec4\u63cf\u8ff0\u7b26\u8868\uff08Group Descriptor Table\uff09\u3001\u5757\u4f4d\u56fe\uff08Block Bitmap\uff09\u3001inode\u4f4d\u56fe\uff08inode Bitmap\uff09\u3001inode\u8868\uff08inode Table\uff09\u4ee5\u53ca\u6570\u636e\u8868\uff08Data Block\uff09\u7ec4\u6210\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167020526571689.png\" alt=\"img\"><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Super Block\uff1a<\/strong> \u5b58\u653e\u6587\u4ef6\u7cfb\u7edf\u672c\u8eab\u7684\u7ed3\u6784\u4fe1\u606f\u3002\u8bb0\u5f55\u7684\u4fe1\u606f\u4e3b\u8981\u6709\uff1aData Block\u548cinode\u7684\u603b\u91cf\u3001\u672a\u4f7f\u7528\u7684Data Block\u548cinode\u7684\u6570\u91cf\u3001\u4e00\u4e2aData Block\u548cinode\u7684\u5927\u5c0f\u3001\u6700\u8fd1\u4e00\u6b21\u6302\u8f7d\u7684\u65f6\u95f4\u3001\u6700\u8fd1\u4e00\u6b21\u5199\u5165\u6570\u636e\u7684\u65f6\u95f4\u3001\u6700\u8fd1\u4e00\u6b21\u68c0\u9a8c\u78c1\u76d8\u7684\u65f6\u95f4\u7b49\u5176\u4ed6\u6587\u4ef6\u7cfb\u7edf\u7684\u76f8\u5173\u4fe1\u606f\u3002Super Block\u7684\u4fe1\u606f\u88ab\u7834\u574f\uff0c\u53ef\u4ee5\u8bf4\u6574\u4e2a\u6587\u4ef6\u7cfb\u7edf\u7ed3\u6784\u5c31\u88ab\u7834\u574f\u4e86\u3002<\/li>\n\n\n\n<li><strong>Group Descriptor Table\uff1a<\/strong> \u5757\u7ec4\u63cf\u8ff0\u7b26\u8868\uff0c\u63cf\u8ff0\u8be5\u5206\u533a\u5f53\u4e2d\u5757\u7ec4\u7684\u5c5e\u6027\u4fe1\u606f\u3002<\/li>\n\n\n\n<li><strong>Block Bitmap\uff1a<\/strong> \u5757\u4f4d\u56fe\u8bb0\u5f55\u7740Data Block\u4e2d\u54ea\u5757\u6570\u636e\u5757\u5df2\u7ecf\u88ab\u5360\u7528\uff0c\u54ea\u5757\u6570\u636e\u5757\u6ca1\u6709\u88ab\u5360\u7528\u3002<\/li>\n\n\n\n<li><strong>inode Bitmap\uff1a<\/strong> inode\u4f4d\u56fe\u5f53\u4e2d\u8bb0\u5f55\u7740\u6bcf\u4e2ainode\u662f\u5426\u7a7a\u95f2\u53ef\u7528\u3002<\/li>\n\n\n\n<li><strong>inode Table\uff1a<\/strong> \u5b58\u653e\u6587\u4ef6\u5c5e\u6027\uff0c\u5373\u6bcf\u4e2a\u6587\u4ef6\u7684inode\u3002<\/li>\n\n\n\n<li><strong>Data Blocks\uff1a<\/strong> \u5b58\u653e\u6587\u4ef6\u5185\u5bb9\u3002 <strong>\u6ce8\u610f\uff1a<\/strong><\/li>\n\n\n\n<li>\u5176\u4ed6\u5757\u7ec4\u5f53\u4e2d\u53ef\u80fd\u5b58\u5728\u5197\u4f59\u7684Super Block\uff0c\u5f53\u67d0\u4e00Super Block\u88ab\u7834\u574f\u540e\u53ef\u4ee5\u901a\u8fc7\u5176\u4ed6Super Block\u8fdb\u884c\u6062\u590d\u3002<\/li>\n\n\n\n<li>\u78c1\u76d8\u5206\u533a\u5e76\u683c\u5f0f\u5316\u540e\uff0c\u6bcf\u4e2a\u5206\u533a\u7684inode\u4e2a\u6570\u5c31\u786e\u5b9a\u4e86\u3002<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u5982\u4f55\u7406\u89e3\u521b\u5efa\u4e00\u4e2a\u7a7a\u6587\u4ef6\uff1f<\/p>\n<\/blockquote>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u901a\u8fc7\u904d\u5386inode\u4f4d\u56fe\u7684\u65b9\u5f0f\uff0c\u627e\u5230\u4e00\u4e2a\u7a7a\u95f2\u7684inode\u3002<\/li>\n\n\n\n<li>\u5728inode\u8868\u5f53\u4e2d\u627e\u5230\u5bf9\u5e94\u7684inode\uff0c\u5e76\u5c06\u6587\u4ef6\u7684\u5c5e\u6027\u4fe1\u606f\u586b\u5145\u8fdbinode\u7ed3\u6784\u4e2d\u3002<\/li>\n\n\n\n<li>\u5c06\u8be5\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u548cinode\u6307\u9488\u6dfb\u52a0\u5230\u76ee\u5f55\u6587\u4ef6\u7684\u6570\u636e\u5757\u4e2d\u3002<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u5982\u4f55\u7406\u89e3\u5bf9\u6587\u4ef6\u5199\u5165\u4fe1\u606f\uff1f<\/p>\n<\/blockquote>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u901a\u8fc7\u6587\u4ef6\u7684inode\u7f16\u53f7\u627e\u5230\u5bf9\u5e94\u7684inode\u7ed3\u6784\u3002<\/li>\n\n\n\n<li>\u901a\u8fc7inode\u7ed3\u6784\u627e\u5230\u5b58\u50a8\u8be5\u6587\u4ef6\u5185\u5bb9\u7684\u6570\u636e\u5757\uff0c\u5e76\u5c06\u6570\u636e\u5199\u5165\u6570\u636e\u5757\u3002<\/li>\n\n\n\n<li>\u82e5\u4e0d\u5b58\u5728\u6570\u636e\u5757\u6216\u7533\u8bf7\u7684\u6570\u636e\u5757\u5df2\u88ab\u5199\u6ee1\uff0c\u5219\u901a\u8fc7\u904d\u5386\u5757\u4f4d\u56fe\u7684\u65b9\u5f0f\u627e\u5230\u4e00\u4e2a\u7a7a\u95f2\u7684\u5757\u53f7\uff0c\u5e76\u5728\u6570\u636e\u533a\u5f53\u4e2d\u627e\u5230\u5bf9\u5e94\u7684\u7a7a\u95f2\u5757\uff0c\u518d\u5c06\u6570\u636e\u5199\u5165\u6570\u636e\u5757\uff0c\u6700\u540e\u8fd8\u9700\u8981\u5efa\u7acbinode\u7ed3\u6784\u548c\u6570\u636e\u5757\u7684\u5bf9\u5e94\u5173\u7cfb\u3002<\/li>\n<\/ol>\n\n\n\n<p><strong>\u8bf4\u660e\u4e00\u4e0b\uff1a<\/strong><\/p>\n\n\n\n<p>\u4e00\u4e2a\u6587\u4ef6\u4f7f\u7528\u7684\u6570\u636e\u5757\u548cinode\u7ed3\u6784\u4f53\u7684\u5bf9\u5e94\u5173\u7cfb\uff0c\u662f\u901a\u8fc7\u4e00\u4e2a\u6570\u7ec4\u8fdb\u884c\u7ef4\u62a4\u7684\u3002\u8be5\u6570\u7ec4\u4e00\u822c\u53ef\u4ee5\u5b58\u50a815\u4e2a\u5143\u7d20\uff0c\u5176\u4e2d\u524d12\u4e2a\u5143\u7d20\u5206\u522b\u5bf9\u5e94\u8be5\u6587\u4ef6\u4f7f\u7528\u768412\u4e2a\u6570\u636e\u5757\uff0c\u5269\u4f59\u7684\u4e09\u4e2a\u5143\u7d20\u5206\u522b\u662f\u4e00\u7ea7\u7d22\u5f15\u3001\u4e8c\u7ea7\u7d22\u5f15\u548c\u4e09\u7ea7\u7d22\u5f15\uff0c\u5f53\u8be5\u6587\u4ef6\u4f7f\u7528\u7684\u6570\u636e\u5757\u7684\u4e2a\u6570\u8d85\u8fc712\u4e2a\u65f6\uff0c\u53ef\u4ee5\u7528\u8fd9\u4e09\u4e2a\u7d22\u5f15\u8fdb\u884c\u6570\u636e\u5757\u6269\u5145\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u5982\u679c\u7406\u89e3\u5220\u9664\u4e00\u4e2a\u6587\u4ef6\uff1f<\/p>\n<\/blockquote>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5c06\u8be5\u6587\u4ef6\u5bf9\u5e94\u7684inode\u5728inode\u4f4d\u56fe\u5f53\u4e2d\u7f6e\u4e3a\u65e0\u6548\u3002<\/li>\n\n\n\n<li>\u5c06\u8be5\u6587\u4ef6\u7533\u8bf7\u8fc7\u7684\u6570\u636e\u5757\u5728\u4f4d\u56fe\u5f53\u4e2d\u7f6e\u4e3a\u65e0\u6548\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u56e0\u4e3a\u6b64\u64cd\u4f5c\u5e76\u4e0d\u4f1a\u771f\u6b63\u5c06\u6587\u4ef6\u5bf9\u5e94\u7684\u4fe1\u606f\u5220\u9664\uff0c\u800c\u53ea\u662f\u5c06\u5176inode\u53f7\u548c\u6570\u636e\u5757\u53f7\u7f6e\u4e3a\u4e86\u65e0\u6548\uff0c\u6240\u4ee5\u5f53\u6211\u4eec\u5220\u9664\u6587\u4ef6\u540e\u77ed\u65f6\u95f4\u5185\u662f\u53ef\u4ee5\u6062\u590d\u7684\u3002<\/p>\n\n\n\n<p>\u4e3a\u4ec0\u4e48\u8bf4\u662f\u77ed\u65f6\u95f4\u5185\u5462\uff0c\u56e0\u4e3a\u8be5\u6587\u4ef6\u5bf9\u5e94\u7684inode\u53f7\u548c\u6570\u636e\u5757\u53f7\u5df2\u7ecf\u88ab\u7f6e\u4e3a\u4e86\u65e0\u6548\uff0c\u56e0\u6b64\u540e\u7eed\u521b\u5efa\u5176\u4ed6\u6587\u4ef6\u6216\u662f\u5bf9\u5176\u4ed6\u6587\u4ef6\u8fdb\u884c\u5199\u5165\u64cd\u4f5c\u7533\u8bf7inode\u53f7\u548c\u6570\u636e\u5757\u53f7\u65f6\uff0c\u53ef\u80fd\u4f1a\u5c06\u8be5\u7f6e\u4e3a\u65e0\u6548\u4e86\u7684inode\u53f7\u548c\u6570\u636e\u5757\u53f7\u5206\u914d\u51fa\u53bb\uff0c\u6b64\u65f6\u5220\u9664\u6587\u4ef6\u7684\u6570\u636e\u5c31\u4f1a\u88ab\u8986\u76d6\uff0c\u4e5f\u5c31\u65e0\u6cd5\u6062\u590d\u6587\u4ef6\u4e86\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u4e3a\u4ec0\u4e48\u62f7\u8d1d\u6587\u4ef6\u7684\u65f6\u5019\u5f88\u6162\uff0c\u800c\u5220\u9664\u6587\u4ef6\u7684\u65f6\u5019\u5f88\u5feb\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u56e0\u4e3a\u62f7\u8d1d\u6587\u4ef6\u9700\u8981\u5148\u521b\u5efa\u6587\u4ef6\uff0c\u7136\u540e\u518d\u5bf9\u8be5\u6587\u4ef6\u8fdb\u884c\u5199\u5165\u64cd\u4f5c\uff0c\u8be5\u8fc7\u7a0b\u9700\u8981\u5148\u7533\u8bf7inode\u53f7\u5e76\u586b\u5165\u6587\u4ef6\u7684\u5c5e\u6027\u4fe1\u606f\uff0c\u4e4b\u540e\u8fd8\u9700\u8981\u518d\u7533\u8bf7\u6570\u636e\u5757\u53f7\uff0c\u6700\u540e\u624d\u80fd\u8fdb\u884c\u6587\u4ef6\u5185\u5bb9\u7684\u6570\u636e\u62f7\u8d1d\uff0c\u800c\u5220\u9664\u6587\u4ef6\u53ea\u9700\u5c06\u5bf9\u5e94\u6587\u4ef6\u7684inode\u53f7\u548c\u6570\u636e\u5757\u53f7\u7f6e\u4e3a\u65e0\u6548\u5373\u53ef\uff0c\u65e0\u9700\u7684\u5220\u9664\u6587\u4ef6\uff0c\u56e0\u6b64\u62f7\u8d1d\u6587\u4ef6\u662f\u5f88\u6162\u7684\uff0c\u800c\u5220\u9664\u6587\u4ef6\u662f\u5f88\u5feb\u7684\u3002<\/p>\n\n\n\n<p>\u8fd9\u5c31\u50cf\u5efa\u697c\u4e00\u6837\uff0c\u6211\u4eec\u9700\u8981\u5f88\u957f\u65f6\u95f4\u624d\u80fd\u5efa\u597d\u4e00\u680b\u697c\uff0c\u800c\u6211\u4eec\u82e5\u662f\u60f3\u62c6\u4e00\u680b\u697c\uff0c\u53ea\u9700\u5728\u8fd9\u680b\u697c\u4e0a\u5199\u4e0a\u4e00\u4e2a\u201c\u62c6\u201d\u5b57\u5373\u53ef\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u5982\u4f55\u7406\u89e3\u76ee\u5f55\uff1f<\/p>\n<\/blockquote>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u90fd\u8bf4\u5728Linux\u4e0b\u4e00\u5207\u7686\u6587\u4ef6\uff0c\u76ee\u5f55\u5f53\u7136\u4e5f\u53ef\u4ee5\u88ab\u770b\u4f5c\u4e3a\u6587\u4ef6\u3002<\/li>\n\n\n\n<li>\u76ee\u5f55\u6709\u81ea\u5df1\u7684\u5c5e\u6027\u4fe1\u606f\uff0c\u76ee\u5f55\u7684inode\u7ed3\u6784\u5f53\u4e2d\u5b58\u50a8\u7684\u5c31\u662f\u76ee\u5f55\u7684\u5c5e\u6027\u4fe1\u606f\uff0c\u6bd4\u5982\u76ee\u5f55\u7684\u5927\u5c0f\u3001\u76ee\u5f55\u7684\u62e5\u6709\u8005\u7b49\u3002<\/li>\n\n\n\n<li>\u76ee\u5f55\u4e5f\u6709\u81ea\u5df1\u7684\u5185\u5bb9\uff0c\u76ee\u5f55\u7684\u6570\u636e\u5757\u5f53\u4e2d\u5b58\u50a8\u7684\u5c31\u662f\u8be5\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u540d\u4ee5\u53ca\u5bf9\u5e94\u6587\u4ef6\u7684inode\u6307\u9488\u3002<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u6bcf\u4e2a\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u5e76\u6ca1\u6709\u5b58\u50a8\u5728\u81ea\u5df1\u7684inode\u7ed3\u6784\u5f53\u4e2d\uff0c\u800c\u662f\u5b58\u50a8\u5728\u8be5\u6587\u4ef6\u6240\u5904\u76ee\u5f55\u6587\u4ef6\u7684\u6587\u4ef6\u5185\u5bb9\u5f53\u4e2d\u3002\u56e0\u4e3a\u8ba1\u7b97\u673a\u5e76\u4e0d\u5173\u6ce8\u6587\u4ef6\u7684\u6587\u4ef6\u540d\uff0c\u8ba1\u7b97\u673a\u53ea\u5173\u6ce8\u6587\u4ef6\u7684inode\u53f7\uff0c\u800c\u6587\u4ef6\u540d\u548c\u6587\u4ef6\u7684inode\u6307\u9488\u5b58\u50a8\u5728\u5176\u76ee\u5f55\u6587\u4ef6\u7684\u6587\u4ef6\u5185\u5bb9\u5f53\u4e2d\u540e\uff0c\u76ee\u5f55\u901a\u8fc7\u6587\u4ef6\u540d\u548c\u6587\u4ef6\u7684inode\u6307\u9488\u5373\u53ef\u5c06\u6587\u4ef6\u540d\u548c\u6587\u4ef6\u5185\u5bb9\u53ca\u5176\u5c5e\u6027\u8fde\u63a5\u8d77\u6765\u3002<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u8f6f\u786c\u94fe\u63a5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u8f6f\u94fe\u63a5<\/h3>\n\n\n\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u6587\u4ef6\u7684\u8f6f\u8fde\u63a5\u3002<\/p>\n\n\n\n<p><code>ln -s myproc myproc-s<\/code><img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167021274592992.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u901a\u8fc7<code>ls -i -l<\/code>\u547d\u4ee4\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u8f6f\u94fe\u63a5\u6587\u4ef6\u7684inode\u53f7\u4e0e\u6e90\u6587\u4ef6\u7684inode\u53f7\u662f\u4e0d\u540c\u7684\uff0c\u5e76\u4e14\u8f6f\u94fe\u63a5\u6587\u4ef6\u7684\u5927\u5c0f\u6bd4\u6e90\u6587\u4ef6\u7684\u5927\u5c0f\u8981\u5c0f\u5f97\u591a\u3002<br><img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16.png\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\"><\/p>\n\n\n\n<p>\u8f6f\u94fe\u63a5\u53c8\u53eb\u7b26\u53f7\u94fe\u63a5\uff0c\u8f6f\u94fe\u63a5\u6587\u4ef6\u76f8\u5bf9\u4e8e\u6e90\u6587\u4ef6\u6765\u8bf4\u662f\u4e00\u4e2a\u72ec\u7acb\u7684\u6587\u4ef6\uff0c\u8be5\u6587\u4ef6\u6709\u81ea\u5df1\u7684inode\u53f7\uff0c\u4f46\u662f\u8be5\u6587\u4ef6\u53ea\u5305\u542b\u4e86\u6e90\u6587\u4ef6\u7684\u8def\u5f84\u540d\uff0c\u6240\u4ee5\u8f6f\u94fe\u63a5\u6587\u4ef6\u7684\u5927\u5c0f\u8981\u6bd4\u6e90\u6587\u4ef6\u5c0f\u5f97\u591a\u3002\u8f6f\u94fe\u63a5\u5c31\u7c7b\u4f3c\u4e8eWindows\u64cd\u4f5c\u7cfb\u7edf\u5f53\u4e2d\u7684\u5feb\u6377\u65b9\u5f0f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16779296183513.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16779296183513.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u4f46\u662f\u8f6f\u94fe\u63a5\u6587\u4ef6\u53ea\u662f\u5176\u6e90\u6587\u4ef6\u7684\u4e00\u4e2a\u6807\u8bb0\uff0c\u5f53\u5220\u9664\u4e86\u6e90\u6587\u4ef6\u540e\uff0c\u94fe\u63a5\u6587\u4ef6\u4e0d\u80fd\u72ec\u7acb\u5b58\u5728\uff0c\u867d\u7136\u4ecd\u4fdd\u7559\u6587\u4ef6\u540d\uff0c\u4f46\u5374\u4e0d\u80fd\u6267\u884c\u6216\u662f\u67e5\u770b\u8f6f\u94fe\u63a5\u7684\u5185\u5bb9\u4e86\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16779297314666.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16779297314666.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u786c\u94fe\u63a5<\/h3>\n\n\n\n<p><code>ln myproc myproc-h<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16779301186829.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-16779301186829.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u901a\u8fc7<code>ls -i -l<\/code>\u547d\u4ee4\u6211\u4eec\u53ef\u4ee5\u770b\u5230\uff0c\u786c\u94fe\u63a5\u6587\u4ef6\u7684inode\u53f7\u4e0e\u6e90\u6587\u4ef6\u7684inode\u53f7\u662f\u76f8\u540c\u7684\uff0c\u5e76\u4e14\u786c\u94fe\u63a5\u6587\u4ef6\u7684\u5927\u5c0f\u4e0e\u6e90\u6587\u4ef6\u7684\u5927\u5c0f\u4e5f\u662f\u76f8\u540c\u7684\uff0c\u7279\u522b\u6ce8\u610f\u7684\u662f\uff0c\u5f53\u521b\u5efa\u4e86\u4e00\u4e2a\u786c\u94fe\u63a5\u6587\u4ef6\u540e\uff0c\u8be5\u786c\u94fe\u63a5\u6587\u4ef6\u548c\u6e90\u6587\u4ef6\u7684\u786c\u94fe\u63a5\u6570\u90fd\u53d8\u6210\u4e862\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793027490312.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793027490312.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u786c\u94fe\u63a5\u6587\u4ef6\u5c31\u662f\u6e90\u6587\u4ef6\u7684\u4e00\u4e2a\u522b\u540d\uff0c\u4e00\u4e2a\u6587\u4ef6\u6709\u51e0\u4e2a\u6587\u4ef6\u540d\uff0c\u8be5\u6587\u4ef6\u7684\u786c\u94fe\u63a5\u6570\u5c31\u662f\u51e0\uff0c\u8fd9\u91ccinode\u53f7\u4e3a924344\u7684\u6587\u4ef6\u6709myproc\u548cmyproc-h\u4e24\u4e2a\u6587\u4ef6\u540d\uff0c\u56e0\u6b64\u8be5\u6587\u4ef6\u7684\u786c\u94fe\u63a5\u6570\u4e3a2\u3002<\/p>\n\n\n\n<p>\u4e0e\u8f6f\u8fde\u63a5\u4e0d\u540c\u7684\u662f\uff0c\u5f53\u786c\u94fe\u63a5\u7684\u6e90\u6587\u4ef6\u88ab\u5220\u9664\u540e\uff0c\u786c\u94fe\u63a5\u6587\u4ef6\u4ecd\u80fd\u6b63\u5e38\u6267\u884c\uff0c\u53ea\u662f\u6587\u4ef6\u7684\u94fe\u63a5\u6570\u51cf\u5c11\u4e86\u4e00\u4e2a\uff0c\u56e0\u4e3a\u6b64\u65f6\u8be5\u6587\u4ef6\u7684\u6587\u4ef6\u540d\u5c11\u4e86\u4e00\u4e2a\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793043632615.png\" alt=\"img\"><\/p>\n\n\n\n<p>\u603b\u4e4b\uff0c\u786c\u94fe\u63a5\u5c31\u662f\u8ba9\u591a\u4e2a\u4e0d\u5728\u6216\u8005\u540c\u5728\u4e00\u4e2a\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u540d\uff0c\u540c\u65f6\u80fd\u591f\u4fee\u6539\u4e00\u4e2a\u6587\u4ef6\uff0c\u5176\u4e2d\u4e00\u4e2a\u4fee\u6539\u540e\uff0c\u6240\u6709\u4e0e\u5176\u786c\u94fe\u63a5\u7684\u6587\u4ef6\u90fd\u4e00\u8d77\u4fee\u6539\u4e86\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u4e3a\u4ec0\u4e48\u521a\u521a\u521b\u5efa\u7684\u76ee\u5f55\u7684\u786c\u94fe\u63a5\u6570\u662f2\uff1f<\/p>\n<\/blockquote>\n\n\n\n<p>\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u666e\u901a\u6587\u4ef6\uff0c\u8be5\u666e\u901a\u6587\u4ef6\u7684\u786c\u94fe\u63a5\u6570\u662f1\uff0c\u56e0\u4e3a\u6b64\u65f6\u8be5\u6587\u4ef6\u53ea\u6709\u4e00\u4e2a\u6587\u4ef6\u540d\u3002\u90a3\u4e3a\u4ec0\u4e48\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55\u540e\uff0c\u8be5\u76ee\u5f55\u7684\u786c\u94fe\u63a5\u6570\u662f2\uff1f<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793093787018.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793093787018.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u56e0\u4e3a\u6bcf\u4e2a\u76ee\u5f55\u521b\u5efa\u540e\uff0c\u8be5\u76ee\u5f55\u4e0b\u9ed8\u8ba4\u4f1a\u6709\u4e24\u4e2a\u9690\u542b\u76ee\u5f55\u6587\u4ef6<code>.<\/code>\u548c<code>..<\/code>\uff0c\u5b83\u4eec\u5206\u522b\u4ee3\u8868\u5f53\u524d\u76ee\u5f55\u548c\u4e0a\u7ea7\u76ee\u5f55\uff0c\u56e0\u6b64\u8fd9\u91cc\u521b\u5efa\u7684\u76ee\u5f55\u6709\u4e24\u4e2a\u540d\u5b57\uff0c\u4e00\u4e2a\u662fdir\u53e6\u4e00\u4e2a\u5c31\u662f\u8be5\u76ee\u5f55\u4e0b\u7684<code>.<\/code>\uff0c\u6240\u4ee5\u521a\u521b\u5efa\u7684\u76ee\u5f55\u786c\u94fe\u63a5\u6570\u662f2\u3002\u901a\u8fc7\u547d\u4ee4\u6211\u4eec\u4e5f\u770b\u5230dir\u548c\u8be5\u76ee\u5f55\u4e0b\u7684<code>.<\/code>\u7684inode\u53f7\u662f\u4e00\u6837\u7684\uff0c\u4e5f\u5c31\u53ef\u4ee5\u8bf4\u660e\u5b83\u4eec\u4ee3\u8868\u7684\u5b9e\u9645\u4e0a\u662f\u540c\u4e00\u4e2a\u6587\u4ef6\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793170608921.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793170608921.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p><strong>\u5c0f\u6280\u5de7\uff1a<\/strong> \u4e00\u4e2a\u76ee\u5f55\u4e0b\u7684\u76f8\u90bb\u7684\u5b50\u76ee\u5f55\u6570\u7b49\u4e8e\u8be5\u76ee\u5f55\u7684\u786c\u94fe\u63a5\u6570\u51cf2\u3002<img decoding=\"async\" src=\"https:\/\/cdn.codergodv.xyz\/image-20230304201515461.png\" alt=\"image-20230304201515461\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u8f6f\u786c\u94fe\u63a5\u7684\u533a\u522b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8f6f\u94fe\u63a5\u662f\u4e00\u4e2a\u72ec\u7acb\u7684\u6587\u4ef6\uff0c\u6709\u72ec\u7acb\u7684inode\uff0c\u800c\u786c\u94fe\u63a5\u6ca1\u6709\u72ec\u7acb\u7684inode\u3002<\/li>\n\n\n\n<li>\u8f6f\u94fe\u63a5\u76f8\u5f53\u4e8e\u5feb\u6377\u65b9\u5f0f\uff0c\u786c\u94fe\u63a5\u672c\u8d28\u6ca1\u6709\u521b\u5efa\u6587\u4ef6\uff0c\u53ea\u662f\u521b\u5efa\u4e86\u4e00\u4e2a\u6587\u4ef6\u540d\u548c\u5df2\u6709\u7684inode\u7684\u6620\u5c04\u5173\u7cfb\uff0c\u5e76\u5199\u5165\u5f53\u524d\u76ee\u5f55\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u6587\u4ef6\u7684\u4e09\u4e2a\u65f6\u95f4<\/h2>\n\n\n\n<p>\u5728Linux\u5f53\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4<code>stat \u6587\u4ef6\u540d<\/code>\u6765\u67e5\u770b\u5bf9\u5e94\u7684\u6587\u4ef6\u4fe1\u606f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793339842624.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"https:\/\/cdn.codergodv.xyz\/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjAyMWRyYWdvbg==,size_20,color_FFFFFF,t_70,g_se,x_16-167793339842624.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"img\"\/><\/div><\/figure>\n\n\n\n<p>\u8fd9\u5176\u4e2d\u5305\u542b\u4e86\u6587\u4ef6\u7684\u4e09\u4e2a\u65f6\u95f4\u4fe1\u606f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Access:<\/strong> \u6587\u4ef6\u6700\u540e\u88ab\u8bbf\u95ee\u7684\u65f6\u95f4\u3002<\/li>\n\n\n\n<li><strong>Modify:<\/strong> \u6587\u4ef6\u5185\u5bb9\u6700\u540e\u88ab\u4fee\u6539\u7684\u65f6\u95f4\u3002<\/li>\n\n\n\n<li><strong>Change:<\/strong> \u6587\u4ef6\u5c5e\u6027\u6700\u540e\u88ab\u4fee\u6539\u7684\u65f6\u95f4\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5f53\u6211\u4eec\u4fee\u6539\u6587\u4ef6\u5185\u5bb9\u65f6\uff0c\u6587\u4ef6\u7684\u5927\u5c0f\u4e00\u822c\u4e5f\u4f1a\u968f\u4e4b\u6539\u53d8\uff0c\u6240\u4ee5\u4e00\u822c\u60c5\u51b5\u4e0bModify\u7684\u6539\u53d8\u4f1a\u5e26\u52a8Change\u4e00\u8d77\u6539\u53d8\uff0c\u4f46\u4fee\u6539\u6587\u4ef6\u5c5e\u6027\u4e00\u822c\u4e0d\u4f1a\u5f71\u54cd\u5230\u6587\u4ef6\u5185\u5bb9\uff0c\u6240\u4ee5\u4e00\u822c\u60c5\u51b5\u4e0bChange\u7684\u6539\u53d8\u4e0d\u4f1a\u5e26\u52a8Modify\u7684\u6539\u53d8\u3002<\/p>\n\n\n\n<p>\u6211\u4eec\u82e5\u662f\u60f3\u5c06\u6587\u4ef6\u7684\u8fd9\u4e09\u4e2a\u65f6\u95f4\u90fd\u66f4\u65b0\u5230\u6700\u65b0\u72b6\u6001\uff0c\u53ef\u4ee5\u4f7f\u7528<code>touch \u6587\u4ef6\u540d<\/code>\u6765\u8fdb\u884c\u65f6\u95f4\u66f4\u65b0\u3002<\/p>\n\n\n\n<p><strong>\u6ce8\u610f\uff1a<\/strong> \u5f53\u67d0\u4e00\u6587\u4ef6\u5b58\u5728\u65f6\u4f7f\u7528touch\u547d\u4ee4\uff0c\u6b64\u65f6touch\u547d\u4ee4\u7684\u4f5c\u7528\u53d8\u4e3a\u66f4\u65b0\u6587\u4ef6\u4fe1\u606f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u8bed\u8a00\u6587\u4ef6IO C\u8bed\u8a00\u6587\u4ef6\u63a5\u53e3\u6c47\u603b C\u8bed\u8a00\u4e2d\u7684\u6587\u4ef6\u64cd\u4f5c\u51fd\u6570\u5982\u4e0b\uff1a \u6587\u4ef6\u64cd\u4f5c\u51fd\u6570 \u529f\u80fd fopen \u6253\u5f00\u6587\u4ef6 f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,1],"tags":[28],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-linux","category-learn","tag-io"],"_links":{"self":[{"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":1,"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"predecessor-version":[{"id":147,"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/posts\/146\/revisions\/147"}],"wp:attachment":[{"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codergodv.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}