{"id":643,"date":"2024-08-30T16:04:32","date_gmt":"2024-08-30T08:04:32","guid":{"rendered":"http:\/\/114.55.108.251\/?p=643"},"modified":"2025-03-04T09:46:15","modified_gmt":"2025-03-04T01:46:15","slug":"linux%e7%b3%bb%e7%bb%9f%e7%bc%96%e7%a8%8b-part7%ef%bc%88%e4%bf%a1%e5%8f%b7%ef%bc%89","status":"publish","type":"post","link":"https:\/\/guapicoding.com\/?p=643","title":{"rendered":"Linux\u7cfb\u7edf\u7f16\u7a0b Part7\uff08\u4fe1\u53f7\uff09"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u76f8\u5173\u6982\u5ff5<\/h2>\n\n\n\n<p>\u4fe1\u53f7\u662f\u8f6f\u4ef6\u5c42\u9762\u4e0a\u7684\u201c\u4e2d\u65ad\u201d\u3002\u4e00\u65e6\u4fe1\u53f7\u4ea7\u751f\uff0c\u65e0\u8bba\u7a0b\u5e8f\u6267\u884c\u5230\u4ec0\u4e48\u4f4d\u7f6e\uff0c\u5fc5\u987b\u7acb\u5373\uff08\u7528\u6237\u611f\u89c9\u662f\u7acb\u5373\uff0c\u5176\u5b9e\u662f\u8981\u7b49\u5f85\u4e00\u4e2a\u4ece\u7528\u6237\u533a\u8fdb\u5165\u5185\u6838\u533a\u7684\u5951\u673a\uff0c\u7ad9\u5728CPU\u7684\u65f6\u95f4\u91cf\u7ea7\u4e0a\u5177\u6709\u5ef6\u8fdf\u6027\uff09\u505c\u6b62\u8fd0\u884c\uff0c\u8f6c\u800c\u53bb\u5904\u7406\u4fe1\u53f7\uff0c\u7b49\u4fe1\u53f7\u5904\u7406\u7ed3\u675f\uff0c\u518d\u7ee7\u7eed\u6267\u884c\u540e\u7eed\u6307\u4ee4\u3002<\/p>\n\n\n\n<p>\u6bcf\u4e2a\u8fdb\u7a0b\u6536\u5230\u7684\u6240\u6709\u4fe1\u53f7\uff0c\u90fd\u662f\u7531<strong>\u5185\u6838<\/strong>\u53d1\u9001\u5e76\u5904\u7406\u7684<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u4e0e\u4fe1\u53f7\u76f8\u5173\u7684\u4e8b\u4ef6\u548c\u72b6\u6001<\/h4>\n\n\n\n<p>\u4ea7\u751f\u4fe1\u53f7\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6309\u952e\u4ea7\u751f\uff0c\u5982\uff1actrl+c\u3001ctrl+z\u3001ctrl+\\<\/li>\n\n\n\n<li>\u7cfb\u7edf\uff08\u51fd\u6570\uff09\u8c03\u7528\u4ea7\u751f\uff0c\u5982\uff1akill\u3001raise\u3001abort<\/li>\n\n\n\n<li>\u8f6f\u4ef6\u6761\u4ef6\u4ea7\u751f\uff0c\u5982\uff1a\u5b9a\u65f6\u5668alarm<\/li>\n\n\n\n<li>\u786c\u4ef6\u5f02\u5e38\u4ea7\u751f\uff0c\u5982\uff1a\u975e\u6cd5\u8bbf\u95ee\u5185\u5b58\uff08\u6bb5\u9519\u8bef\uff09\u3001\u96640\uff08\u6d6e\u70b9\u6570\u4f8b\u5916\uff09\u3001\u5185\u5b58\u5bf9\u9f50\u51fa\u9519\uff08\u603b\u7ebf\u9519\u8bef\uff09<\/li>\n\n\n\n<li>\u547d\u4ee4\u4ea7\u751f\uff0c\u5982\uff1akill\u547d\u4ee4<\/li>\n<\/ul>\n\n\n\n<p><strong>\u9012\u8fbe<\/strong>\uff1a\u5185\u6838\u4ea7\u751f\u4fe1\u53f7\u540e\uff0c\u9012\u9001\u5e76\u4e14\u9001\u8fbe\u5230\u8fdb\u7a0b\uff0c\u76f4\u63a5\u88ab\u5185\u6838\u5904\u7406<\/p>\n\n\n\n<p><strong>\u672a\u51b3<\/strong>\uff1a\u4ea7\u751f\u4e0e\u9012\u8fbe\u4e4b\u95f4\u7684\u72b6\u6001\uff0c\u4e3b\u8981\u7531\u4e8e\u963b\u585e\uff08\u5c4f\u853d\uff09\u5bfc\u81f4\u8be5\u72b6\u6001<\/p>\n\n\n\n<p>\u4ece\u5b8f\u89c2\u4e0a\u770b\uff0c\u53ef\u4ee5\u628a\u9012\u8fbe\u4e0e\u5904\u7406\u5212\u7b49\u53f7\uff0c\u4fe1\u53f7\u88ab\u9012\u8fbe\u4e86\u5185\u6838\u5c31\u5904\u7406\uff0c\u4f46\u4ececpu\u65f6\u95f4\u91cf\u7ea7\u7684\u89d2\u5ea6\u770b\uff0c\u6bcf\u4e2a\u4fe1\u53f7\u90fd\u4f1a\u7ecf\u5386\u672a\u51b3\u72b6\u6001\uff0c\u56e0\u4e3a\u5f53\u4fe1\u53f7\u4ea7\u751f\u540e\uff0c\u672a\u51b3\u4fe1\u53f7\u96c6\u4e2d\u63cf\u8ff0\u8be5\u4fe1\u53f7\u7684\u4f4d\u7acb\u523b\u7ffb\u8f6c\u4e3a1\uff08\u6b64\u65f6\u8be5\u4fe1\u53f7\u5c31\u5904\u4e8e\u672a\u51b3\u72b6\u6001\uff09\uff0c\u5982\u679c\u6b64\u4fe1\u53f7\u5728\u963b\u585e\u4fe1\u53f7\u96c6\u4e2d\u672a\u88ab\u5c4f\u853d\uff0c\u672a\u51b3\u4fe1\u53f7\u96c6\u4e2d\u63cf\u8ff0\u8be5\u4fe1\u53f7\u7684\u4f4d\u4f1a\u518d\u7ffb\u8f6c\u4e3a0\uff0c\u5185\u6838\u5c31\u53bb\u5904\u7406\u8be5\u4fe1\u53f7\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u53ca\u5176\u77ed\u6682\u3002<\/p>\n\n\n\n<p>\u4fe1\u53f7\u5904\u7406\u65b9\u5f0f\uff1a <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6267\u884c\u9ed8\u8ba4\u5904\u7406\u52a8\u4f5c\uff08\u6bcf\u4e00\u4e2a\u4fe1\u53f7\u90fd\u6709\u81ea\u5df1\u7684\u9ed8\u8ba4\u5904\u7406\u52a8\u4f5c\uff09<\/li>\n\n\n\n<li>\u5ffd\u7565\uff08\u4e22\u5f03\uff09<\/li>\n\n\n\n<li>\u6355\u6349\uff08\u81ea\u5b9a\u4e49\u5904\u7406\u51fd\u6570\uff09<\/li>\n<\/ul>\n\n\n\n<p>Linux\u5185\u6838\u7684\u8fdb\u7a0b\u63a7\u5236\u5757PCB\u662f\u4e00\u4e2a\u7ed3\u6784\u4f53\uff0c\u9664\u4e86\u5305\u542b\u8fdb\u7a0bid\u3001\u72b6\u6001\u3001\u5de5\u4f5c\u76ee\u5f55\u3001\u7528\u6237id\u3001\u7ec4id\u3001<br>\u6587\u4ef6\u63cf\u8ff0\u7b26\u8868\uff0c\u8fd8\u5305\u542b\u4e86\u4fe1\u53f7\u76f8\u5173\u7684\u4fe1\u606f\uff0c\u4e3b\u8981\u662f\u963b\u585e\u4fe1\u53f7\u96c6\u548c\u672a\u51b3\u4fe1\u53f7\u96c6 <\/p>\n\n\n\n<p><strong>\u963b\u585e\u4fe1\u53f7\u96c6<\/strong>(\u4fe1\u53f7\u5c4f\u853d\u5b57)\uff1a\u672c\u8d28\u662f\u4f4d\u56fe\uff0c\u7528\u6765\u8bb0\u5f55\u4fe1\u53f7\u7684\u5c4f\u853d\u72b6\u6001\u3002\u88ab\u5c4f\u853d\u7684\u4fe1\u53f7\uff080\u21921\uff09\u4f1a\u4e00\u76f4\u5904\u4e8e\u672a\u51b3\u6001\uff0c\u76f4\u5230\u89e3\u9664\u5c4f\u853d\uff081\u21920\uff09\u518d\u5bf9\u8be5\u4fe1\u53f7\u8fdb\u884c\u5904\u7406<\/p>\n\n\n\n<p><strong>\u672a\u51b3\u4fe1\u53f7\u96c6<\/strong>\uff1a\u672c\u8d28\u662f\u4f4d\u56fe\uff0c\u7528\u6765\u8bb0\u5f55\u4fe1\u53f7\u7684\u5904\u7406\u72b6\u6001\u3002\u4fe1\u53f7\u4ea7\u751f\u540e\u7531\u4e8e\u67d0\u4e9b\u539f\u56e0\uff08\u4e3b\u8981\u662f\u963b\u585e\uff09\u4e0d\u80fd\u62b5\u8fbe\uff08\u5373\u672a\u88ab\u5904\u7406\uff09\uff0c\u8fd9\u7c7b\u4fe1\u53f7\u7684\u96c6\u5408\u79f0\u4e3a\u672a\u51b3\u4fe1\u53f7\u96c6\u3002\u5f53\u4fe1\u53f7\u4ea7\u751f\uff0c\u672a\u51b3\u4fe1\u53f7\u96c6\u4e2d\u63cf\u8ff0\u8be5\u4fe1\u53f7\u7684\u4f4d\u7acb\u523b\u7ffb\u8f6c\u4e3a1\uff08\u9ed8\u8ba4\u4e3a0\uff09\uff0c\u8868\u793a\u4fe1\u53f7\u5904\u4e8e\u672a\u51b3\u72b6\u6001\uff0c\u5f53\u4fe1\u53f7\u88ab\u5904\u7406\u540e\u518d\u7ffb\u8f6c\u4e3a0\uff0c\u8fd9\u4e00\u65f6\u523b\u975e\u5e38\u77ed\u6682\u3002<\/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:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/\u963b\u585e\u4fe1\u53f7\u96c6\u548c\u672a\u51b3\u4fe1\u53f7\u96c6-1024x508.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"508\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/\u963b\u585e\u4fe1\u53f7\u96c6\u548c\u672a\u51b3\u4fe1\u53f7\u96c6-1024x508.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-654\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">\u4fe1\u53f7\u56db\u8981\u7d20<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7f16\u53f7\uff08\u5373value\uff0c\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u53ef\u80fd\u4e0d\u540c\uff09\n<ul class=\"wp-block-list\">\n<li>\u53ef\u901a\u8fc7\u547d\u4ee4<code>kill -l<\/code>\u67e5\u770b\u5404\u4e2a\u4fe1\u53f7\u7684\u540d\u79f0\u548c\u5bf9\u5e94\u7f16\u53f7<\/li>\n\n\n\n<li>1~31\u662f\u5e38\u89c4\u4fe1\u53f7\uff0c34~64\u662f\u5b9e\u65f6\u4fe1\u53f7<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u540d\u79f0\uff1a\u5b8f\u540d\uff08\u53ef\u5c4f\u853d\u5e73\u53f0\u5dee\u5f02\uff09<\/li>\n\n\n\n<li>\u5bf9\u5e94\u4e8b\u4ef6\uff08\u53ea\u6709\u5bf9\u5e94\u4e8b\u4ef6\u53d1\u751f\u540e\uff0c\u8be5\u4fe1\u53f7\u624d\u4f1a\u88ab\u5185\u6838\u53d1\u9001\uff0c\u4f46\u4e0d\u4e00\u5b9a\u88ab\u9012\u8fbe\uff0c\u4e5f\u5c31\u65e0\u6cd5\u5904\u7406\uff09<\/li>\n\n\n\n<li>\u9ed8\u8ba4\u5904\u7406\u52a8\u4f5c\n<ul class=\"wp-block-list\">\n<li>Term\uff1a\u7ec8\u6b62\u8fdb\u7a0b<\/li>\n\n\n\n<li>Ign\uff1a\u5ffd\u7565\u4fe1\u53f7\uff08\u9ed8\u8ba4\u5373\u65f6\u5bf9\u8be5\u79cd\u4fe1\u53f7\u5ffd\u7565\u64cd\u4f5c\uff09<\/li>\n\n\n\n<li>Core\uff1a\u7ec8\u6b62\u8fdb\u7a0b\uff0c\u751f\u6210Core\u6587\u4ef6\uff08\u67e5\u9a8c\u8fdb\u7a0b\u6b7b\u4ea1\u539f\u56e0\uff0c\u7528\u4e8egdb\u8c03\u8bd5\uff09<\/li>\n\n\n\n<li>Stop\uff1a\u505c\u6b62\uff08\u6682\u505c\uff09\u8fdb\u7a0b<\/li>\n\n\n\n<li>Cont\uff1a\u7ee7\u7eed\u8fd0\u884c\u8fdb\u7a0b<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u7279\u522b\u5f3a\u8c03\uff0c<strong>9\uff09SIGKILL\u548c19\uff09SIGSTOP<\/strong>\u4fe1\u53f7\uff0c\u4e0d\u5141\u8bb8\u5ffd\u7565\u548c\u6355\u6349\uff0c<strong>\u53ea\u80fd\u6267\u884c\u9ed8\u8ba4\u52a8\u4f5c<\/strong>\uff0c\u751a\u81f3\u4e0d\u80fd\u5c06\u5176\u8bbe\u7f6e\u4e3a\u963b\u585e<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u5e38\u89c4\u4fe1\u53f7\u4e00\u89c8\u8868 <\/h4>\n\n\n\n<p>\u53ef\u901a\u8fc7\u547d\u4ee4<code>man 7 signal<\/code>\u67e5\u770b\u5e2e\u52a9\u6587\u6863\u83b7\u53d6\u5404\u4e2a\u4fe1\u53f7\u7684\u56db\u8981\u7d20<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728393238758-3.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"185\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728393238758-3.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-685\"  sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728393299734.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"926\" height=\"273\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728393299734.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-682\"  sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728393518317.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"214\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728393518317.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-686\"  sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4fe1\u53f7\u7684\u4ea7\u751f<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">\u7ec8\u7aef\u6309\u952e\u4ea7\u751f\u4fe1\u53f7<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ctrl+c \u2192 2\uff09SIGINT\uff08\u7ec8\u6b62\/\u4e2d\u65ad\uff09 \u201cINT\u201d\u5373interrupt<\/li>\n\n\n\n<li>Ctrl+z \u2192 20\uff09SIGTSTP\uff08\u6682\u505c\/\u505c\u6b62\uff09 \u201cT\u201d\u5373terminal<\/li>\n\n\n\n<li>Ctrl+\\ \u2192 3\uff09SIGQUIT\uff08\u9000\u51fa\uff09 <\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u786c\u4ef6\u5f02\u5e38\u4ea7\u751f\u4fe1\u53f7<\/h4>\n\n\n\n<p>\u975e\u6cd5\u8bbf\u95ee\u5185\u5b58\uff08\u6bb5\u9519\u8bef\uff09\u3001\u96640\uff08\u6d6e\u70b9\u6570\u4f8b\u5916\uff09\u3001\u5185\u5b58\u5bf9\u9f50\u51fa\u9519\uff08\u603b\u7ebf\u9519\u8bef\uff09<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u51fd\u6570\u8c03\u7528\u4ea7\u751f\u4fe1\u53f7<\/h4>\n\n\n\n<p><strong><em>kill\u51fd\u6570 <\/em><\/strong><\/p>\n\n\n\n<p>\u7ed9\u6307\u5b9a\u8fdb\u7a0b\u53d1\u9001\u6307\u5b9a\u4fe1\u53f7\uff08\u4e0d\u4e00\u5b9a\u662f\u6740\u6b7b\uff09<\/p>\n\n\n\n<p><code>int kill(pid_t pid, int signum<\/code>)<\/p>\n\n\n\n<p>\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>signum\uff1a\u5f85\u53d1\u9001\u7684\u4fe1\u53f7\uff08\u4e0d\u63a8\u8350\u4f7f\u7528\u6570\u5b57\uff0c\u5e94\u8be5\u4f7f\u7528\u5b8f\u540d\uff0c\u56e0\u4e3a\u4e0d\u540c\u64cd\u4f5c\u7cfb\u7edf\u4fe1\u53f7\u7f16\u53f7\u53ef\u80fd\u4e0d\u540c\uff0c\u4f46\u540d\u79f0\u4e00\u81f4\uff09<\/li>\n\n\n\n<li>pid\uff1a\u88ab\u53d1\u9001\u4fe1\u53f7\u7684\u8fdb\u7a0b\u7684PID\n<ul class=\"wp-block-list\">\n<li>\uff1e0\uff1a\u53d1\u9001\u4fe1\u53f7\u7ed9\u6307\u5b9a\u7684\u8fdb\u7a0b<\/li>\n\n\n\n<li>=0\uff1a\u53d1\u9001\u4fe1\u53f7\u7ed9\u4e0e\u8c03\u7528kill\u51fd\u6570\u8fdb\u7a0b\u5c5e\u4e8e\u540c\u4e00\u8fdb\u7a0b\u7ec4\u7684\u6240\u6709\u8fdb\u7a0b<\/li>\n\n\n\n<li>\uff1c0\uff1a\u53d6\u7edd\u5bf9\u503c\uff0c\u53d1\u9001\u4fe1\u53f7\u7ed9\u8be5\u7edd\u5bf9\u503c\u6240\u5bf9\u5e94\u7684\u8fdb\u7a0b\u7ec4\u7684\u6240\u6709\u8fdb\u7a0b<\/li>\n\n\n\n<li>=-1\uff1a\u53d1\u9001\u4fe1\u53f7\u7ed9\u7cfb\u7edf\u4e2d\u6709\u6743\u9650\u53d1\u9001\u7684\u6240\u6709\u8fdb\u7a0b <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0\uff1a\u6210\u529f<\/li>\n\n\n\n<li>-1\uff1a\u5931\u8d25<\/li>\n<\/ul>\n\n\n\n<p>kill\u547d\u4ee4\u4ea7\u751f\u4fe1\u53f7\uff1a<code>kill -SIGKILL pid<\/code> \u6bd4\u5982\uff1a<code>kill -9 10426<\/code><\/p>\n\n\n\n<p><em><strong>raise\u51fd\u6570 <\/strong><\/em><\/p>\n\n\n\n<p><code>int raise(int sig);<\/code> \u7ed9\u5f53\u524d\u8fdb\u7a0b\u53d1\u9001\u6307\u5b9a\u4fe1\u53f7<\/p>\n\n\n\n<p><em><strong>abort\u51fd\u6570<\/strong> <\/em><\/p>\n\n\n\n<p><code>void abort(void);<\/code> \u7ed9\u5f53\u524d\u8fdb\u7a0b\u53d1\u9001SIGABRT\u4fe1\u53f7<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u8f6f\u4ef6\u6761\u4ef6\u4ea7\u751f\u4fe1\u53f7<\/h4>\n\n\n\n<p><strong><em>alarm\u51fd\u6570 <\/em><\/strong><\/p>\n\n\n\n<p><code>unsigned int alarm(unsigned int seconds);<\/code> \u4f7f\u7528\u81ea\u7136\u8ba1\u65f6\u6cd5\uff0c\u5b9a\u65f6\u53d1\u900114\uff09SIGALRM\u4fe1\u53f7\u7ed9\u5f53\u524d\u8fdb\u7a0b<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53c2\u6570seconds\uff1a\u5b9a\u65f6\u79d2\u6570<\/li>\n\n\n\n<li>\u8fd4\u56de\u503c\uff1a\u4e0a\u6b21\u5b9a\u65f6\u7684\u5269\u4f59\u65f6\u95f4\uff08\u65e0\u9519\u8bef\u60c5\u51b5\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u5e38\u7528<code>alarm(0)<\/code>\u6765\u53d6\u6d88\u5b9a\u65f6\u5668<\/p>\n\n\n\n<p>ps\uff1a<strong>\u6bcf\u4e2a\u8fdb\u7a0b\u90fd\u6709\u4e14\u53ea\u6709\u552f\u4e00\u4e00\u4e2a\u5b9a\u65f6\u5668<\/strong><\/p>\n\n\n\n<p>time \u547d\u4ee4 \uff1a \u67e5\u770b\u7a0b\u5e8f\u6267\u884c\u65f6\u95f4\uff0c\u6bd4\u5982\uff1a<code>time .\/my_alarm<\/code><\/p>\n\n\n\n<p>\u5b9e\u9645\u65f6\u95f4 = \u7528\u6237\u65f6\u95f4 + \u5185\u6838\u65f6\u95f4 + \u7b49\u5f85\u65f6\u95f4\uff08\u6700\u957f\uff09 \u2014\u2014&gt; \u7a0b\u5e8f\u8fd0\u884c\u7684\u74f6\u9888\u5728\u4e8eIO\uff0c\u56e0\u6b64\u4f18\u5316\u7a0b\u5e8f\uff0c\u9996\u5148\u4f18\u5316IO<\/p>\n\n\n\n<p><strong><em>setitimer\u51fd\u6570<\/em><\/strong><\/p>\n\n\n\n<p><code>int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);<\/code> <\/p>\n\n\n\n<p>\u8bbe\u7f6e\u5b9a\u65f6\u5668\uff0c\u53ef\u4ee5\u5b9e\u73b0\u5468\u671f\u5b9a\u65f6\uff0c\u65f6\u95f4\u63a7\u5236\u53ef\u4ee5\u8fbe\u5230\u5fae\u79d2\u7ea7\u522b<\/p>\n\n\n\n<p>\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>which\n<ul class=\"wp-block-list\">\n<li>ITIMER_REAL\uff1a \u91c7\u7528\u81ea\u7136\u8ba1\u65f6 \u2014\u2014&gt; 14\uff09SIGALRM \u5373\u8ba1\u7b97\u81ea\u7136\u65f6\u95f4<\/li>\n\n\n\n<li>ITIMER_VIRTUAL: \u91c7\u7528\u7528\u6237\uff08\u865a\u62df\uff09\u7a7a\u95f4\u8ba1\u65f6 \u2014\u2014&gt; 26\uff09SIGVTALRM \u5373\u8ba1\u7b97\u8fdb\u7a0b\u5360\u7528cpu\u7684\u65f6\u95f4<\/li>\n\n\n\n<li>ITIMER_PROF: \u91c7\u7528\u5185\u6838+\u7528\u6237\u7a7a\u95f4\u8ba1\u65f6 \u2014\u2014&gt; 27\uff09SIGPROF \u5373\u8ba1\u7b97\u8fdb\u7a0b\u5360\u7528cpu\u4ee5\u53ca\u6267\u884c\u7cfb\u7edf\u8c03\u7528\u7684\u65f6\u95f4<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>old_value\uff1a\u4f20\u51fa\u53c2\u6570\uff0c\u4e0a\u6b21\u5b9a\u65f6\u5269\u4f59\u65f6\u95f4<\/li>\n\n\n\n<li>new_value\uff1a\u5b9a\u65f6\u79d2\u6570<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>struct itimerval {\n    struct timeval {\n    time_t      tv_sec;         \/* seconds *\/\n    suseconds_t tv_usec;        \/* microseconds *\/\n\n    }it_interval;---&gt; \u5468\u671f\u5b9a\u65f6\u79d2\u6570\n\n    struct timeval {\n    time_t      tv_sec;         \n    suseconds_t tv_usec;        \n\n    }it_value;  ---&gt; \u7b2c\u4e00\u6b21\u5b9a\u65f6\u79d2\u6570  \n};<\/code><\/pre>\n\n\n\n<p>\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6210\u529f\uff1a0<\/li>\n\n\n\n<li>\u5931\u8d25\uff1a-1\uff0cerrno<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4fe1\u53f7\u96c6\u64cd\u4f5c\u51fd\u6570<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">\u4fe1\u53f7\u96c6\u8bbe\u5b9a<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sigset_t set;  \u81ea\u5b9a\u4e49\u4fe1\u53f7\u96c6 \n\nsigemptyset(sigset_t *set);  \u4fe1\u53f7\u96c6\u4e2d\u6240\u6709\u4f4d\u5168\u90e8\u7f6e0\n\nsigfillset(sigset_t *set);  \u4fe1\u53f7\u96c6\u4e2d\u6240\u6709\u4f4d\u5168\u90e8\u7f6e1\n\nsigaddset(sigset_t *set, int signum);  \u5c06\u4e00\u4e2a\u4fe1\u53f7\u6dfb\u52a0\u5230\u96c6\u5408\u4e2d\uff0c0\u21921\n\nsigdelset(sigset_t *set, int signum);  \u5c06\u4e00\u4e2a\u4fe1\u53f7\u4ece\u96c6\u5408\u4e2d\u79fb\u9664\uff0c1\u21920\n\nsigismember\uff08const sigset_t *set\uff0cint signum);  \u5224\u65ad\u4e00\u4e2a\u4fe1\u53f7\u662f\u5426\u5728\u96c6\u5408\u4e2d\uff0c \u5728\u21921\uff0c \u4e0d\u5728\u21920<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">sigprocmask\u51fd\u6570<\/h4>\n\n\n\n<p>\u8bbe\u7f6e\u4fe1\u53f7\u5c4f\u853d\u5b57\u6216\u8005\u89e3\u9664\u5c4f\u853d<\/p>\n\n\n\n<p><code>int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);<\/code><\/p>\n\n\n\n<p>\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>how\uff1a\n<ul class=\"wp-block-list\">\n<li>SIG_BLOCK\uff1a\u8bbe\u7f6e\u963b\u585e<\/li>\n\n\n\n<li>SIG_UNBLOCK\uff1a\u53d6\u6d88\u963b\u585e<\/li>\n\n\n\n<li>SIG_SETMASK\uff1a\u7528\u81ea\u5b9a\u4e49set\u66ff\u6362mask <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u4f20\u5165\u53c2\u6570set\uff1a\u81ea\u5b9a\u4e49\u7684set<\/li>\n\n\n\n<li>\u4f20\u51fa\u53c2\u6570oldset\uff1a\u5c06\u8001\u7684mask\u4fdd\u5b58<\/li>\n<\/ul>\n\n\n\n<p>\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6210\u529f\uff1a0<\/li>\n\n\n\n<li>\u5931\u8d25\uff1a-1\uff0c\u8bbe\u7f6eerrno<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">sigpending\u51fd\u6570<\/h4>\n\n\n\n<p>\u8bfb\u53d6\u5f53\u524d\u8fdb\u7a0b\u7684\u672a\u51b3\u4fe1\u53f7\u96c6\uff08\u672a\u51b3\u4fe1\u53f7\u96c6\u4e0d\u80fd\u76f4\u63a5\u4fee\u6539\uff0c\u53ea\u80fd\u901a\u8fc7\u4fee\u6539\u963b\u585e\u4fe1\u53f7\u96c6\u6765\u5f71\u54cd\u5b83\uff09<\/p>\n\n\n\n<p><code>int sigpending(sigset_t *set);<\/code><\/p>\n\n\n\n<p>\u4f20\u51fa\u53c2\u6570set\uff1a\u4f20\u51fa\u7684\u672a\u51b3\u4fe1\u53f7\u96c6<\/p>\n\n\n\n<p>\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6210\u529f\uff1a0<\/li>\n\n\n\n<li>\u5931\u8d25\uff1a-1\uff0c\u8bbe\u7f6eerrno<\/li>\n<\/ul>\n\n\n\n<p><strong>\u7f16\u7a0b\u7ec3\u4e60<\/strong>\uff1a\u4f7f\u7528\u4fe1\u53f7\u96c6\u64cd\u4f5c\u51fd\u6570\u628aCtrl+z\u8bbe\u7f6e\u4e3a\u5c4f\u853d<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\n#include&lt;stdlib.h&gt;\n#include&lt;string.h&gt;\n#include&lt;fcntl.h&gt;\n#include&lt;unistd.h&gt;\n#include&lt;pthread.h&gt;\n#include&lt;sys\/stat.h&gt;\n#include&lt;sys\/mman.h&gt;\n#include&lt;dirent.h&gt;\n#include&lt;errno.h&gt;\n#include&lt;signal.h&gt;\n\nvoid sys_err(const char *str) {\n    perror(str);\n    exit(1);\n}\n\nvoid print_set(const sigset_t *set) {\n    int i = 0;\n    for(i = 1; i &lt;= 32; i++) {\n        if(sigismember(set, i)) putchar('1');\n        else putchar('0');\n    }\n    printf(\"\\n\");\n}\n\nint main(int argc, char *argv&#91;]) {\n    sigset_t set, oldset, pedset;\n    sigemptyset(&amp;set);\n    sigaddset(&amp;set, SIGTSTP);\n\n    int ret = 0;\n    ret = sigprocmask(SIG_BLOCK, &amp;set, &amp;oldset);\n    if(ret == -1) sys_err(\"sigprocmask error\");\n\n    while(1) {\n        ret = sigpending(&amp;pedset);\n        if(ret == -1) sys_err(\"sigpending error\");\n        print_set(&amp;pedset);\n        sleep(1);\n    }\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728566735637.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"386\" height=\"156\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728566735637.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-743\"  sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/div><\/figure>\n\n\n\n<p>ps\uff1a\u8fd9\u65f6\u4f7f\u7528Ctrl+z\u5df2\u7ecf\u65e0\u6cd5\u7ec8\u6b62\u8be5\u7a0b\u5e8f\u4e86\uff0c\u53ea\u80fd\u5148<code>ps aux<\/code>\u627e\u5230\u8fdb\u7a0bPID\uff0c\u518d\u7528<code>kill -9 pid<\/code>\u6765\u6740\u6b7b<\/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:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/\u4fe1\u53f7\u96c6\u64cd\u4f5c-1024x476.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"476\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/\u4fe1\u53f7\u96c6\u64cd\u4f5c-1024x476.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-655\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u203b\u4fe1\u53f7\u6355\u6349<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">signal\u51fd\u6570<\/h4>\n\n\n\n<p><strong>\u6ce8\u518c<\/strong>\u4e00\u4e2a\u4fe1\u53f7\u6355\u6349\u51fd\u6570<\/p>\n\n\n\n<p><code>typedef void (*sighandler_t)(int);<\/code>  \/\/\u51fd\u6570\u6307\u9488<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sighandler_t signal(int signum, sighandler_t handler);<\/code><\/pre>\n\n\n\n<p>ps\uff1asignal\u51fd\u6570\u4f7f\u7528\u7684\u4e0d\u662f\u901a\u7528\u6807\u51c6\uff0c\u56e0\u6b64\u5c3d\u91cf\u907f\u514d\u4f7f\u7528\uff0c\u7528\u66f4\u89c4\u8303\u7684sigaction\u51fd\u6570<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u203bsigaction\u51fd\u6570<\/h4>\n\n\n\n<p>\u4fee\u6539\u4fe1\u53f7\u5904\u7406\u52a8\u4f5c\uff08\u901a\u5e38\u5728Linux\u4e2d\u7528\u5b83\u6765<strong>\u6ce8\u518c<\/strong>\u4e00\u4e2a\u4fe1\u53f7\u6355\u6349\u51fd\u6570\uff09<\/p>\n\n\n\n<p>int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);<\/p>\n\n\n\n<p>\u8fd4\u56de\u503c\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6210\u529f\uff1a0<\/li>\n\n\n\n<li>\u5931\u8d25\uff1a-1\uff0c\u8bbe\u7f6eerrno<\/li>\n<\/ul>\n\n\n\n<p>\u53c2\u6570\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>signum\uff1a\u8981\u4fee\u6539\u7684\u4fe1\u53f7 <\/li>\n\n\n\n<li>\u4f20\u5165\u53c2\u6570act\uff1a\u65b0\u5904\u7406\u52a8\u4f5c<\/li>\n\n\n\n<li>\u4f20\u51fa\u53c2\u6570oldact\uff1a\u65e7\u5904\u7406\u52a8\u4f5c\uff08\u5982\u679c\u4e0d\u9700\u8981\u65e7\u5904\u7406\u52a8\u4f5c\uff0c\u53ef\u4ee5\u4f20NULL\uff09<\/li>\n<\/ul>\n\n\n\n<p>\u7ed3\u6784\u4f53\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct sigaction {\n    void\u3000(*sa_handler)(int); \/\/\u6355\u6349\u51fd\u6570\u540d\uff08\u540csignal\u51fd\u6570\u7684\u53c2\u6570\uff09\uff0c\u4e5f\u53ef\u4ee5\u7528\u5b8f\uff1aSIG_IGN\u8868\u5ffd\u7565\uff0cSIG_DFL\u8868\u6267\u884c\u9ed8\u8ba4\u52a8\u4f5c\n    void\u3000(*sa_sigaction)(int, siginfo_t *, void *); \/\/\u6307\u5b9a\u5e26\u53c2\u6570\u7684\u4fe1\u53f7\u6355\u6349\u51fd\u6570\uff08\u57fa\u672c\u7528\u4e0d\u5230\uff09\n    sigset_t\u3000sa_mask; \/\/\u53ea\u4f5c\u7528\u4e8e\u4fe1\u53f7\u6355\u6349\u51fd\u6570\u6267\u884c\u671f\u95f4\u7684\u4fe1\u53f7\u5c4f\u853d\u5b57\n    int\u3000sa_flags; \/\/\u4e00\u822c\u8bbe\u4e3a0\uff0c\u8868\u793a\u672c\u4fe1\u53f7\u5c4f\u853d\n};<\/code><\/pre>\n\n\n\n<p><strong>\u7f16\u7a0b\u7ec3\u4e60<\/strong>\uff1a\u7528sigaction\u51fd\u6570\u5b8c\u6210\u4fe1\u53f7\u6355\u6349<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\n#include&lt;stdlib.h&gt;\n#include&lt;string.h&gt;\n#include&lt;fcntl.h&gt;\n#include&lt;unistd.h&gt;\n#include&lt;pthread.h&gt;\n#include&lt;sys\/stat.h&gt;\n#include&lt;sys\/mman.h&gt;\n#include&lt;dirent.h&gt;\n#include&lt;errno.h&gt;\n#include&lt;signal.h&gt;\n\nvoid sys_err(const char *str) {\n    perror(str);\n    exit(1);\n}\n\nvoid sig_catch(int signo) { \/\/\u6355\u6349\u56de\u8c03\u51fd\u6570\n    printf(\"catch you!%d\\n\", signo);\n    return ;\n}\n\nint main(int argc, char *argv&#91;]) {\n    struct sigaction act, oldact;\n    act.sa_handler = sig_catch; \/\/\u8bbe\u7f6e\u6355\u6349\u56de\u8c03\u51fd\u6570\n    sigemptyset(&amp;act.sa_mask); \/\/\u8bbe\u7f6e\u5c4f\u853d\u5b57\u6e05\u7a7a\uff0c\u53ea\u5728\u6355\u6349\u51fd\u6570\u5de5\u4f5c\u65f6\u6709\u6548\n    act.sa_flags = 0; \/\/\u8bbe\u7f6e\u9ed8\u8ba4\u5c5e\u6027\n\n    int ret = sigaction(SIGTSTP, &amp;act, &amp;oldact); \/\/\u6ce8\u518c\u4fe1\u53f7\u6355\u6349\u51fd\u6570\n    if(ret == -1) {\n        sys_err(\"sigaction error!\");\n    }\n\n    while(1);\n\n    return 0;\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u4fe1\u53f7\u6355\u6349\u7279\u6027<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6355\u6349\u51fd\u6570\u6267\u884c\u671f\u95f4\uff0c\u4fe1\u53f7\u5c4f\u853d\u5b57\u7531PCB\u4e2d\u9ed8\u8ba4\u7684mask\u8f6c\u4e3asa_mask\uff0c\u6355\u6349\u51fd\u6570\u6267\u884c\u7ed3\u675f\u540e\uff0c\u518d\u6062\u590d\u56demask<\/li>\n\n\n\n<li>\u6355\u6349\u51fd\u6570\u6267\u884c\u671f\u95f4\uff0c\u88ab\u6355\u6349\u7684\u8fd9\u4e2a\u4fe1\u53f7\u81ea\u52a8\u88ab\u5c4f\u853d(\u524d\u63d0\u662f\u8bbe\u7f6esa_flags = 0)<\/li>\n\n\n\n<li>\u6355\u6349\u51fd\u6570\u6267\u884c\u671f\u95f4\uff0c\u88ab\u5c4f\u853d\u7684\u4fe1\u53f7\u5373\u4f7f\u53d1\u9001\u591a\u6b21\uff0c\u89e3\u9664\u5c4f\u853d\u540e\u53ea\u5904\u7406\u4e00\u6b21\uff0c\u5373\u5e38\u89c4\u4fe1\u53f7<strong>\u4e0d\u652f\u6301\u6392\u961f<\/strong><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">\u5185\u6838\u5b9e\u73b0\u4fe1\u53f7\u6355\u6349<\/h4>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728647907204.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"497\" height=\"389\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1728647907204.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-780\"  sizes=\"auto, (max-width: 497px) 100vw, 497px\" \/><\/div><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1734660342683-1024x397.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"397\" data-original=\"https:\/\/guapicoding.com\/wp-content\/uploads\/2024\/09\/1734660342683-1024x397.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2132\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">SIGCHLD\u4fe1\u53f7<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">SIGCHLD\u7684\u4ea7\u751f\u6761\u4ef6<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5b50\u8fdb\u7a0b\u7ec8\u6b62\u65f6<\/li>\n\n\n\n<li>\u5b50\u8fdb\u7a0b\u63a5\u6536\u5230SIGSTOP\u4fe1\u53f7\u505c\u6b62\u65f6<\/li>\n\n\n\n<li>\u5b50\u8fdb\u7a0b\u5904\u5728\u505c\u6b62\u6001\uff0c\u63a5\u6536\u5230SIGCONT\u540e\u5524\u9192\u65f6<\/li>\n<\/ul>\n\n\n\n<p>\u603b\u7ed3\uff1a\u5b50\u8fdb\u7a0b\u57fa\u672c\u4e0a\u7a0d\u5fae\u6709\u70b9\u52a8\u9759\u5c31\u8981\u53d1SIGCHLD\u4fe1\u53f7\u544a\u8bc9\u4ed6\u7239<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u501f\u52a9SIGCHLD\u4fe1\u53f7\u56de\u6536\u5b50\u8fdb\u7a0b<\/h4>\n\n\n\n<p>\u5b50\u8fdb\u7a0b\u7ed3\u675f\u8fd0\u884c\uff0c\u5176\u7236\u8fdb\u7a0b\u4f1a\u6536\u5230SIGCHLD\u4fe1\u53f7\u3002\u8be5\u4fe1\u53f7\u7684\u9ed8\u8ba4\u5904\u7406\u52a8\u4f5c\u662f\u5ffd\u7565\uff0c\u53ef\u4ee5\u6355\u6349\u8be5\u4fe1\u53f7\uff0c\u5728\u6355\u6349\u51fd\u6570\u4e2d\u5b8c\u6210\u5b50\u8fdb\u7a0b\u72b6\u6001\u7684\u56de\u6536<\/p>\n\n\n\n<p>\u4f7f\u7528<code>SIGCHLD<\/code>\u4fe1\u53f7\u56de\u6536\u5b50\u8fdb\u7a0b\u6bd4\u76f4\u63a5\u8c03\u7528<code>wait<\/code>\u51fd\u6570\u6765\u56de\u6536\u5b50\u8fdb\u7a0b\u6709\u51e0\u4e2a\u660e\u663e\u7684\u4f18\u52bf\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u975e\u963b\u585e\u64cd\u4f5c\uff1a\u5728\u7b49\u5f85\u5b50\u8fdb\u7a0b\u7ed3\u675f\u65f6\uff0c\u5982\u679c\u76f4\u63a5\u8c03\u7528 <code>wait<\/code>\uff0c\u7236\u8fdb\u7a0b\u4f1a\u88ab\u963b\u585e\uff0c\u76f4\u5230\u6709\u5b50\u8fdb\u7a0b\u7ec8\u6b62\u3002\u800c\u4f7f\u7528 <code>SIGCHLD<\/code> \u4fe1\u53f7\uff0c\u7236\u8fdb\u7a0b\u53ef\u4ee5\u7ee7\u7eed\u6267\u884c\u5176\u4ed6\u4efb\u52a1\uff0c\u800c\u4e0d\u5fc5\u7b49\u5f85\u5b50\u8fdb\u7a0b\u7ed3\u675f\u3002<\/li>\n\n\n\n<li>\u54cd\u5e94\u6027\uff1a\u901a\u8fc7\u4f7f\u7528\u4fe1\u53f7\u673a\u5236\uff0c\u7236\u8fdb\u7a0b\u53ef\u4ee5\u5bf9\u5b50\u8fdb\u7a0b\u7684\u72b6\u6001\u53d8\u5316\u4f5c\u51fa\u66f4\u8fc5\u901f\u7684\u53cd\u5e94\u3002\u4f8b\u5982\uff0c\u5f53\u5b50\u8fdb\u7a0b\u7ec8\u6b62\u65f6\uff0c\u7236\u8fdb\u7a0b\u53ef\u4ee5\u7acb\u5373\u5904\u7406\u8fd9\u4e2a\u4e8b\u4ef6\uff0c\u800c\u4e0d\u9700\u8981\u5b9a\u671f\u68c0\u67e5\u5b50\u8fdb\u7a0b\u7684\u72b6\u6001\u3002<\/li>\n\n\n\n<li>\u907f\u514d\u5fd9\u7b49\uff1a\u5982\u679c\u4f7f\u7528\u8f6e\u8be2\u7684\u65b9\u6cd5\uff08\u4f8b\u5982\u5faa\u73af\u8c03\u7528 <code>wait<\/code>\uff09\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4 CPU \u8d44\u6e90\u7684\u6d6a\u8d39\u3002\u4f7f\u7528 <code>SIGCHLD<\/code> \u4fe1\u53f7\u53ef\u4ee5\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\uff0c\u56e0\u4e3a\u5b83\u662f\u57fa\u4e8e\u4e8b\u4ef6\u9a71\u52a8\u7684\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u203b<strong>\u7f16\u7a0b\u7ec3\u4e60\uff1a<\/strong>\u501f\u52a9SIGCHLD\u4fe1\u53f7\u56de\u6536\u5b50\u8fdb\u7a0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;stdio.h&gt;\n#include&lt;stdlib.h&gt;\n#include&lt;string.h&gt;\n#include&lt;fcntl.h&gt;\n#include&lt;unistd.h&gt;\n#include&lt;pthread.h&gt;\n#include&lt;sys\/stat.h&gt;\n#include&lt;sys\/mman.h&gt;\n#include&lt;dirent.h&gt;\n#include&lt;errno.h&gt;\n#include&lt;signal.h&gt;\n\nvoid sys_err(const char *str) {\n    perror(str);\n    exit(1);\n}\n\nvoid catch_child(int signo) { \/\/\u6709\u5b50\u8fdb\u7a0b\u7ec8\u6b62\uff0c\u53d1\u9001SIGCHLD\u4fe1\u53f7\u65f6\uff0c\u8be5\u51fd\u6570\u4f1a\u88ab\u5185\u6838\u56de\u8c03\n    pid_t wpid;\n    int status;\n\n    while((wpid = waitpid(-1, &amp;status, 0)) != -1) { \/\/\u5faa\u73af\u56de\u6536\uff0c\u9632\u6b62\u591a\u4e2a\u5b50\u8fdb\u7a0b\u540c\u65f6\u6b7b\u4ea1\uff0c\u5bfc\u81f4\u50f5\u5c38\u8fdb\u7a0b\n        if(WIFEXITED(status)) {\n            printf(\"-------catch child, id = %d, ret = %d\\n\", wpid, WEXITSTATUS(status)); \/\/\u56de\u6536\u6210\u529f\n        }\n    }\n    return ;\n}\n\nint main(int argc, char *argv&#91;]) {\n    pid_t pid;\n\n    \/\/\u5148\u628aSIGCHLD\u4fe1\u53f7\u8bbe\u7f6e\u963b\u585e\uff0c\u9632\u6b62\u7236\u8fdb\u7a0b\u6355\u6349\u51fd\u6570\u8fd8\u6ca1\u6ce8\u518c\u6210\u529f\uff0c\u5b50\u8fdb\u7a0b\u5c31\u5148\u6b7b\u4e86\n    sigset_t set;\n    sigemptyset(&amp;set);\n    sigaddset(&amp;set, SIGCHLD);\n\n    sigprocmask(SIG_BLOCK, &amp;set, NULL);\n\n    int i = 0;\n    for(i = 0; i &lt; 5; i++) {\n        if((pid = fork()) == 0) break;\n    }\n\n    if(i == 5) {\n        struct sigaction act;\n        act.sa_handler = catch_child;\n        sigemptyset(&amp;act.sa_mask);\n        act.sa_flags = 0;\n\n        sigaction (SIGCHLD, &amp;act, NULL);\n\n        \/\/\u5982\u679c\u5728\u6355\u6349\u51fd\u6570\u6ce8\u518c\u6210\u529f\u524d\uff0c\u6709\u5b50\u8fdb\u7a0b\u6b7b\u4ea1\uff0c\u4f46\u662fSIGCHLD\u4fe1\u53f7\u5df2\u7ecf\u88ab\u5c4f\u853d\n        \/\/\u56e0\u6b64\u7236\u8fdb\u7a0b\u4e0d\u4e88\u7406\u4f1a\uff0c\u7b49\u5f85\u51fd\u6570\u6ce8\u518c\u5b8c\u6bd5\uff0c\u89e3\u9664\u963b\u585e\u540e\uff0c\u5982\u679c\u6709\u591a\u4e2aSIGCHLD\u4fe1\u53f7\u53d1\u9001\u7ed9\u7236\u8fdb\u7a0b\n        \/\/\u5904\u7406\u7a0b\u5e8f\u4e5f\u53ea\u4f1a\u4f1a\u88ab\u8c03\u7528\u4e00\u6b21\uff0c\u56e0\u4e3a\u666e\u901a\u4fe1\u53f7\u4e0d\u652f\u6301\u6392\u961f\uff0c\u4f46\u662f\u56e0\u4e3a\u7ed9wait()\u51fd\u6570\u52a0\u4e0a\u4e86while\u5faa\u73af\n        \/\/\u8fd9\u4e00\u6b21\u8c03\u7528\u5c31\u53ef\u4ee5\u5904\u7406\u5728\u90a3\u4e2a\u65f6\u95f4\u6bb5\u6240\u6709\u5df2\u7ec8\u6b62\u7684\u5b50\u8fdb\u7a0b\n\n        \/\/\u6355\u6349\u51fd\u6570\u6ce8\u518c\u597d\u4e86\uff0c\u89e3\u9664\u963b\u585e\n        sigprocmask(SIG_UNBLOCK, &amp;set, NULL);\n\n        printf(\"i am parent, pid = %d\\n\", getpid());\n        while(1); \/\/\u8ba9\u7236\u8fdb\u7a0b\u5148\u522b\u7ed3\u675f\n    } else {\n        printf(\"i am child, pid = %d\\n\", getpid());\n        return i;\n    }\n\n    return 0;\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u6162\u901f\u7cfb\u7edf\u8c03\u7528\u88ab\u4fe1\u53f7\u4e2d\u65ad<\/h2>\n\n\n\n<p>\u7cfb\u7edf\u8c03\u7528\u53ef\u5206\u4e3a\u4e24\u7c7b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6162\u901f\u7cfb\u7edf\u8c03\u7528<\/strong>\uff1a\u53ef\u80fd\u4f1a\u4f7f\u8fdb\u7a0b\u6c38\u8fdc\u963b\u585e\u7684\u4e00\u7c7b\uff0c\u5982\u679c\u5728\u963b\u585e\u671f\u95f4\u6536\u5230\u4e00\u4e2a\u4fe1\u53f7\uff0c\u8be5\u7cfb\u7edf\u8c03\u7528\u5c31\u88ab\u4e2d\u65ad\uff0c\u4e0d\u518d\u7ee7\u7eed\u6267\u884c\uff08\u65e9\u671f\uff09\uff0c\u4e5f\u53ef\u4ee5\u8bbe\u5b9a\u7cfb\u7edf\u8c03\u7528\u662f\u5426\u91cd\u542f\u3002\u6bd4\u5982\uff1a<code>read<\/code>\u3001<code>write<\/code>\u3001<code>pause<\/code>\u3001<code>wait<\/code>\u7b49\u7b49<\/li>\n\n\n\n<li>\u5176\u4ed6\u7cfb\u7edf\u8c03\u7528\uff1a<code>getpid<\/code>\u3001<code>getppid<\/code>\u3001<code>fork<\/code>\u7b49\u7b49<\/li>\n<\/ul>\n\n\n\n<p>\u6162\u901f\u7cfb\u7edf\u8c03\u7528\u963b\u585e\u671f\u95f4\uff0c\u4e2d\u65ad\u6162\u901f\u7cfb\u7edf\u8c03\u7528\u7684\u4fe1\u53f7\u4e0d\u80fd\u88ab\u5c4f\u853d\u3001\u5ffd\u7565\uff0c\u8be5\u4fe1\u53f7\u5fc5\u987b\u88ab\u6355\u6349\uff0c\u4fe1\u53f7\u5904\u7406\u5b8c\u518d\u56de\u5230\u7cfb\u7edf\u8c03\u7528<\/p>\n\n\n\n<p>\u88ab\u4fe1\u53f7\u4e2d\u65ad\u540e\u8fd4\u56de\uff0d\uff11\uff0c\u8bbe\u7f6eerrno\u4e3aEINTR\uff0c\u53ef\u4ee5\u4fee\u6539<code>sa_flags<\/code>\u53c2\u6570\u6765\u8bbe\u7f6e\u88ab\u4fe1\u53f7\u4e2d\u65ad\u540e\u662f\u5426\u91cd\u542f\u7cfb\u7edf\u8c03\u7528\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e0d\u91cd\u542f\uff1aSA_INTERRURT<\/li>\n\n\n\n<li>\u91cd\u542f\uff1aSA_RESTART<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u76f8\u5173\u6982\u5ff5 \u4fe1\u53f7\u662f\u8f6f\u4ef6\u5c42\u9762\u4e0a\u7684\u201c\u4e2d\u65ad\u201d\u3002\u4e00\u65e6\u4fe1\u53f7\u4ea7\u751f\uff0c\u65e0\u8bba\u7a0b\u5e8f\u6267\u884c\u5230\u4ec0\u4e48\u4f4d\u7f6e\uff0c\u5fc5\u987b\u7acb\u5373\uff08\u7528\u6237\u611f\u89c9\u662f\u7acb\u5373\uff0c\u5176\u5b9e\u662f\u8981 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,10],"tags":[21,30],"class_list":{"0":"post-643","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"hentry","6":"category-linux","8":"tag-linux","9":"tag-30"},"_links":{"self":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts\/643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=643"}],"version-history":[{"count":80,"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts\/643\/revisions"}],"predecessor-version":[{"id":2133,"href":"https:\/\/guapicoding.com\/index.php?rest_route=\/wp\/v2\/posts\/643\/revisions\/2133"}],"wp:attachment":[{"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guapicoding.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}