{"id":305033,"date":"2020-06-08T21:00:21","date_gmt":"2020-06-08T21:00:21","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=305033"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=305033","title":{"rendered":"\u041a \u0432\u043e\u043f\u0440\u043e\u0441\u0443 \u043e\u0431 \u0410\u043f\u043e\u0444\u0435\u043d\u0438\u0438, \u0422\u0435\u043b\u0435\u0433\u043e\u043d\u0438\u0438 \u0438 \u041f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 _ \u0432 \u043d\u0430\u0447\u0430\u043b\u0435)"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/505926\/\">\n<blockquote><p><i>\u0412 1958 \u0433\u043e\u0434\u0443 \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0439 \u043d\u0435\u0439\u0440\u043e\u043f\u0441\u0438\u0445\u043e\u043b\u043e\u0433 \u041a\u043b\u0430\u0443\u0441 \u041a\u043e\u043d\u0440\u0430\u0434 \u0432\u0432\u0435\u043b \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u0430\u043f\u043e\u0444\u0435\u043d\u0438\u044f\u00bb (\u043e\u0442 \u043b\u0430\u0442. apophene \u2014 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435, \u0434\u0435\u043b\u0430\u0442\u044c \u044f\u0432\u043d\u044b\u043c; \u0442\u0435\u0440\u043c\u0438\u043d \u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 \u043a \u0442\u0435\u043a\u0441\u0442\u0430\u043c \u0440\u0435\u043b\u0438\u0433\u0438\u043e\u0437\u043d\u044b\u0445 \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u0438\u0439, \u0433\u0434\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u043d\u0430\u043d\u0438\u0435, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u043c\u043e\u0435 \u0432\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u044f), \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044f \u043f\u043e\u0434 \u043d\u0438\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0441\u0438\u0445\u0438\u043a\u0438, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u0432 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u0430\u0445 \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0432 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f\u0445. \u0418\u043b\u043b\u044e\u0437\u0438\u044f \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438. \u041d\u0430\u0448 \u043c\u043e\u0437\u0433 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0449\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0438\u0440\u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435\u0442. \u0421\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f\u043c \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044f\u043c. \u042d\u0442\u043e \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0430\u043f\u043e\u0444\u0435\u043d\u0438\u0435\u0439. \u0412 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u2013 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u043e\u0434\u0430.<\/i><br \/>  <i>\u041d\u0435\u043f\u0440\u044f\u0445\u0438\u043d \u041d. \u00ab\u042f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u0443\u044e \u0442\u043e\u0431\u043e\u0439\u00bb<\/i><\/p><\/blockquote>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 IT \u0440\u0435\u0441\u0443\u0440\u0441\u0435? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0435\u0439 \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u0435\u0451 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c. \u0420\u044f\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u0430\u0441\u0441\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439 \u043a\u043e\u0434\u0430\u2026 \u0418\u043b\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u2014 \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u0438\u0433\u0440\u044b \u0440\u0430\u0437\u0443\u043c\u0430, \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u0413\u043b\u0430\u0432\u0430 1. \u00ab\u0410\u0433\u0435\u043d\u0442 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440\u00bb<\/h3>\n<p>  \u0412\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b-\u0430\u0433\u0435\u043d\u0442\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0435\u0439 \u0440\u044f\u0434 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0434\u0430\u0447 \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u0438\u0435\u043d\u0442-\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c. \u0410\u0433\u0435\u043d\u0442 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 34002, \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440, \u043e\u043d\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u0448\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u0442\u043e \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043e\u0442\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u043d\u0430\u0432\u0435\u0440\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tr\/mz\/kl\/trmzklssjskomt-sxqhxfdpbihq.png\"><br \/>  <i>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/i><\/p>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0430\u0433\u0435\u043d\u0442\u0430 \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 fork, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 exec, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u043b pid \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0412\u0441\u0451 \u0448\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440 \u043c\u043e\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0447\u0435\u0442 \u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u044b stdout \u0438 stderr.<\/p>\n<p>  \u042d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u043d\u043e\u0432\u044b\u0435 (dup2) FD \u0434\u043b\u044f stdout \u0438 stderr, \u0430 \u0437\u0430\u0442\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0445 \u0432 \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435; \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c stderr \u0432 stdout \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c popen; \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c stdout- \u0438 stderr-\u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e. \u041c\u044b \u0438\u0437\u0431\u0440\u0430\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u0435\u0442\u043e\u0434, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 (\u0430 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u0442\u043e \u043f\u043e \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 2 \u041c\u0411 \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044e \u0431\u0443\u0444\u0435\u0440\u0430 pipe), \u0430 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u044b \u0442\u0435\u0440\u044f\u043b\u0438 \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c stdout \u0438 stderr. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u2014 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 stdout \u0438 stderr, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0447\u0435\u0440\u0435\u0437 open \u0444\u0430\u0439\u043b\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430\u0448 \u0432\u044b\u0432\u043e\u0434. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 open \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 FD, \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0447\u0435\u0433\u043e \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442 \u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u0435\u043d:<\/p>\n<pre><code class=\"cpp\">int pid = fork(); switch (pid) {     case -1 :         return BADFORK;     case 0 :         close(stdout);         close(stderr);         open(fileout, O_CREAT | O_WRONLY, 0777);         open(fileerr, O_CREAT | O_WRONLY, 0777);         execve(arguments[0], arguments, environ);         exit(EXIT_FAILURE);     default :         return pid; }<\/code><\/pre>\n<p>  <i>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0443\u0431\u0440\u0430\u043d\u044b \u0432 \u0446\u0435\u043b\u044f\u0445 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438).<\/i><\/p>\n<p>  \u041a\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0438\u0441\u0430\u043b \u0432 \u0444\u0430\u0439\u043b \u0432\u044b\u0432\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043b\u0441\u044f \u0438 \u0431\u044b\u043b \u0433\u043e\u0442\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u00ab\u0431\u043e\u0435\u0432\u044b\u0445\u00bb \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u0418\u043b\u0438 \u043d\u0435\u0442? \u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0431\u0430\u0433, \u00ab\u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u00bb \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D0%BB%D0%B5%D0%B3%D0%BE%D0%BD%D0%B8%D1%8F_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F)\" rel=\"nofollow\">\u0442\u0435\u043b\u0435\u0433\u043e\u043d\u0438\u0438<\/a>).<\/p>\n<h3>\u0413\u043b\u0430\u0432\u0430 2. \u00ab\u0422\u0435\u043b\u0435\u0433\u043e\u043d\u0438\u044f\u00bb<\/h3>\n<p>  \u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0432\u043e\u0442 \u0432 \u0447\u0435\u043c: \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u0432 \u0444\u0430\u0439\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c stdout \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b) \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430:<\/p>\n<pre><code class=\"plaintext\">[2020-06-05 16:58:49]  \u041d\u0430\u0447\u0430\u043b\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 :34002<\/code><\/pre>\n<p>  \u041f\u043e\u0433\u043e\u0434\u0438\u0442\u0435-\u043a\u0430! \u041d\u043e \u0432\u0435\u0434\u044c \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430 \u0438\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u2014 \u043c\u0430\u0442\u0435\u0440\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0432\u044b\u0437\u0432\u0430\u0432\u0448\u0435\u0433\u043e fork()! \u041c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043f\u0443\u0441\u0442\u044f \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b! \u041a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0441\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0432 stdout, \u0430 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0442\u0440\u043e\u043a \u2014 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0432 \u0444\u0430\u0439\u043b, \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0443 \u0430\u0433\u0435\u043d\u0442\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0435\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f waitpid? \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0434\u0430\u0435\u0442 \u043f\u043e\u0431\u0438\u0442\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c?<\/p>\n<pre><code class=\"cpp\">static void _exec_readfile(struct frs_json * target, const char * filename) {     FILE * fp;     char linebuff[VEN_PIPE_READ_SIZE + 1] = { 0 };     fp = fopen(filename, &quot;r&quot;);     if (!fp)         frs_err(&quot;\u0424\u0430\u0439\u043b \\&quot;%s\\&quot; \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u0442 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f&quot;, filename);     else {         while(fgets(linebuff, VEN_PIPE_READ_SIZE, fp))             frs_json_string(target, NULL, bxi_strtrimr(linebuff));     }     fclose(fp); }<\/code><\/pre>\n<p>  \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u043f\u043e\u0431\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c (frs_* \u043f\u043e\u043a\u0440\u044b\u0442\u044b \u0442\u0435\u0441\u0442\u0430\u043c\u0438). \u0422\u0430\u043a \u043a\u0430\u043a \u0436\u0435 \u044d\u0442\u043e\u0442 fp \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434 \u0430\u0433\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0443\u0441\u0442\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438? \u041d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e, \u0442\u0435\u043b\u0435\u0433\u043e\u043d\u0438\u044f \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u2014 \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u0430 \u0441\u043f\u0443\u0441\u0442\u044f 9 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043d\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0442 \u00ab\u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9g\/pv\/c7\/9gpvc7fjwrn55pggacmexfxbohm.jpeg\"><br \/>  <i>\u041c\u043e\u0439 FD \u0442\u0440\u043e\u0433\u0430\u043b\u0430 \u0437\u0435\u0431\u0440\u0430<\/i><\/p>\n<p>  Valgrind \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0433\u043e\u0440\u0447\u0438\u043b\u043e. \u0412\u0435\u0434\u044c \u0435\u0433\u043e \u0432\u0441\u0435\u043c\u043e\u0433\u0443\u0449\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0440\u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438 \u043a\u0443\u0447\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0437. \u0418\u043b\u0438 \u043d\u0435 \u0437\u0440\u044f? \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u041d\u043e \u043a\u0430\u043a\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043c\u043e\u0433\u043b\u0430 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u0430\u043a\u043e\u043c\u0443 \u044d\u0444\u0444\u0435\u043a\u0442\u0443?<\/p>\n<h3>\u0413\u043b\u0430\u0432\u0430 3. \u00ab\u0414\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u00bb<\/h3>\n<p>  \u0422\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u0430\u0433. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u0434 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 QtCreator (\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0441\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 C) \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043b \u0432\u0441\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0435\u0441\u044f \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u044d\u0442\u043e\u0442 \u0431\u0430\u0433 \u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0435\u0435 (\u0437\u0430\u043a\u043e\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438), \u043a\u0430\u043a \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437.<\/p>\n<pre><code class=\"plaintext\">^C[2020-06-05 16:58:46]  \u041f\u043e\u043b\u0443\u0447\u0435\u043d \u0441\u0438\u0433\u043d\u0430\u043b &quot;Interrupt&quot;, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b [2020-06-05 16:58:49]  \u041d\u0430\u0447\u0430\u043b\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 :34002 [2020-06-05 16:58:49]  \u0417\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 :34002 [2020-06-05 16:58:49]  \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 :34002 [2020-06-05 16:58:49]  \u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0435\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d [2020-06-05 16:58:50]  \u041d\u0438\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430<\/code><\/pre>\n<p>  \u0412\u043f\u043e\u0440\u0443 \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0433\u0440\u0435\u043c\u043b\u0438\u043d\u0430\u0445, \u0440\u0430\u0437\u0440\u0443\u0448\u0430\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0437\u043d\u0443\u0442\u0440\u0438, \u043b\u043e\u043c\u0430\u044f \u0442\u043e \u043e\u0434\u043d\u0443 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0442\u043e \u0434\u0440\u0443\u0433\u0443\u044e. \u041d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0435 \u0447\u0443\u0442\u044c\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u0431\u0430\u0433\u0430\u043c\u0438 \u0431\u044b\u043b\u0430 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c. \u041a\u0430\u043a\u0430\u044f? \u041a\u0442\u043e \u0437\u043d\u0430\u0435\u0442, \u043d\u043e \u044d\u0442\u043e \u0436-\u0436-\u0436-\u0436 \u043d\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u0430!<\/p>\n<p>  \u041d\u0430\u0439\u0442\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043e\u0442\u043a\u0430\u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043b\u0435\u0433\u043a\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d\u0430 \u044f\u0441\u043d\u043e \u0438 \u0447\u0435\u0442\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0430 \u043f\u0440\u0438\u0447\u0438\u043d\u0443:<\/p>\n<pre><code class=\"plaintext\">[2020-06-06 14:40:12] frs_socket_bind \u041f\u043e\u0440\u0442 :34002 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f (&quot;Address already in use&quot; (98)) [2020-06-06 14:40:12]  \u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 :34002 [2020-06-06 14:40:12] ven_server_start \u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0442\u0430\u043a \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d? \u041a\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b? \u0422\u044b \u0436\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u043c\u0438\u043d\u0443\u0442\u0443 \u043d\u0430\u0437\u0430\u0434!<\/p>\n<pre><code class=\"plaintext\">$ ps aux | grep vento alex     14144  0.0  0.0 156780  7212 pts\/0    Sl+  14:39   0:00 .\/vento<\/code><\/pre>\n<p>  \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430. \u041d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c?<\/p>\n<pre><code class=\"plaintext\">kill -9 14144<\/code><\/pre>\n<p>  \u0418 \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043f\u043e\u0440\u0442\u043e\u043c 34002:<\/p>\n<pre><code class=\"plaintext\">$ lsof -i | grep 34002 vento     14144 alex    3u  IPv4 12275384      0t0  TCP *:34002 (LISTEN)<\/code><\/pre>\n<p>  \u0410 \u043a\u0442\u043e \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f?<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u044b\u0432\u043e\u0434 lsof -i \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c:<\/p>\n<pre><code class=\"plaintext\">$ lsof -i | grep 34002 vento     151640 alex    3u  IPv4 12275384      0t0  TCP *:34002 (LISTEN)<\/code><\/pre>\n<p>  \u0410\u0433\u0430, \u043e\u0434\u0438\u043d \u0441\u043e\u043a\u0435\u0442, \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0435\u0440<s>, \u043e\u0434\u0438\u043d \u0420\u0435\u0439\u0445<\/s>.<\/p>\n<pre><code class=\"plaintext\">$ lsof -i | grep 34002 _Postman  25078 alex  104u  IPv4 12885232      0t0  TCP localhost:46154-&gt;localhost:34002 (ESTABLISHED) vento     27468 alex    3u  IPv4 12890254      0t0  TCP *:34002 (LISTEN)<\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0437\u0430\u0434\u0430\u0435\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0443\u2026<\/p>\n<p>  \u041d\u043e \u0447\u0442\u043e \u044d\u0442\u043e?<\/p>\n<pre><code class=\"plaintext\">$ lsof -i | grep 34002 _Postman  25078 alex  104u  IPv4 12885232      0t0  TCP localhost:46154-&gt;localhost:34002 (ESTABLISHED) vento     27468 alex    3u  IPv4 12890254      0t0  TCP *:34002 (LISTEN) vento     27506 alex    3u  IPv4 12890254      0t0  TCP *:34002 (LISTEN) vento     27506 alex    4u  IPv4 12890329      0t0  TCP localhost:34002-&gt;localhost:46154 (ESTABLISHED)<\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wp\/wq\/62\/wpwq62hwasqdflzz9bxomgjvebq.jpeg\"><br \/>  <i>\u0417\u0430\u0431\u0430\u0432\u043d\u044b\u0439 \u0444\u0430\u043a\u0442 #197766: \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442\u0441\u044b\u043b\u043a\u0430 \u043a \u00ab\u0417\u0432\u0435\u0437\u0434\u043d\u044b\u043c \u0432\u043e\u0439\u043d\u0430\u043c\u00bb<\/i><\/p>\n<p>  \u0414\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u043e\u0440\u0442\u0430? \u041f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u043b\u0430\u0433 REUSEPORT.<\/p>\n<h3>\u0413\u043b\u0430\u0432\u0430 4. \u00abCLOEXEC\u00bb<\/h3>\n<p>  \u0425\u043c\u2026 \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d \u0444\u043b\u0430\u0433 CLOEXEC? <\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u043b\u0430\u0433 \u043f\u043e\u0431\u043b\u0438\u0436\u0435:<\/p>\n<pre><code class=\"plaintext\">$man fork        *  The child process is created  with  a  single  thread\u2014the  one  that           called  fork().   The  entire virtual address space of the parent is           replicated in the child, including the states of mutexes,  condition           variables,  and other pthreads objects; the use of pthread_atfork(3)           may be helpful for dealing with problems that this can cause.         *  The child inherits copies of the parent's set of open file  descrip\u2010           tors.   Each  file  descriptor  in the child refers to the same open           file description (see open(2)) as the corresponding file  descriptor           in  the parent.  This means that the two file descriptors share open           file status flags, file offset,  and  signal-driven  I\/O  attributes           (see the description of F_SETOWN and F_SETSIG in fcntl(2)). <\/code><\/pre>\n<p>  \u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 fork() \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u043e\u043f\u0438\u044e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043d\u0438\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u043e\u043f\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 (\u0430 \u0442\u0430\u043a \u043a\u0430\u043a \u0432 UNIX[-like] \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u00ab\u0432\u0441\u0451 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u00bb \u2014 \u0442\u043e \u043d\u0430\u0440\u0430\u0432\u043d\u0435 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c\u0438 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435)<\/p>\n<pre><code class=\"plaintext\">$man exec        The exec() family of functions replaces the current process image with a new process image.  The functions described in        this manual page are front-ends for execve(2).  (See the manual page  for  execve(2)  for  further  details  about  the        replacement of the current process image.)<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">$man execve        *  By  default,  file  descriptors  remain open across an execve().  File descriptors that are marked close-on-exec are           closed; see the description of FD_CLOEXEC in fcntl(2).  (If a file descriptor is closed, this will cause the release           of  all record locks obtained on the underlying file by this process.  See fcntl(2) for details.)  POSIX.1 says that           if file descriptors 0, 1, and 2 would otherwise be closed after a successful execve(), and the  process  would  gain           privilege because the set-user-ID or set-group_ID mode bit was set on the executed file, then the system may open an           unspecified file for each of these file descriptors.  As a general principle, no portable  program,  whether  privi\u2010           leged or not, can assume that these three file descriptors will remain closed across an execve().<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043a\u043e\u043f\u0438\u044e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430, \u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u043c\u0443 \u0444\u043b\u0430\u0433 FD_CLOEXEC\/SOCK_CLOEXEC.<\/p>\n<p>  <i>\u0412\u043e\u043e\u0431\u0449\u0435, \u043b\u043e\u0433\u0438\u0447\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b, \u0435\u0441\u043b\u0438 \u0431\u044b \u043f\u043e\u043c\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u041d\u0423\u0416\u041d\u041e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0443\u0442\u0435\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 root-\u0444\u0430\u0439\u043b\u044b, \u043d\u043e \u0444\u043b\u0430\u0433 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 POSIX-2001, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u043d\u0430\u0448\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u0438\u0435, <a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2014-3956\" rel=\"nofollow\">\u0445\u043e\u0442\u044f<\/a> \u0438 <a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2016-9962\" rel=\"nofollow\">\u0441\u043f\u043e\u0440\u043d\u043e\u0435<\/a>.<\/i><\/p>\n<pre><code class=\"cpp\">server-&gt;socket = socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"cpp\">fcntl(client, F_SETFD, FD_CLOEXEC);<\/code><\/pre>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u0442, \u043d\u0430\u0448\u0438 \u0444\u043b\u0430\u0433\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0434\u043e.<\/p>\n<p>  \u0422\u043e\u0433\u0434\u0430 \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u042f\u0434\u0440\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0444\u043b\u0430\u0433? \u041a\u0442\u043e-\u0442\u043e \u0435\u0433\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442? \u0418 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u0442 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435?<\/p>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u043c\u0443\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 gdb:<\/p>\n<pre><code class=\"plaintext\">$ sudo gdb -p 27506 GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git [...] Reading symbols from \/lib\/x86_64-linux-gnu\/libgcc_s.so.1...(no debugging symbols found)...done. 0x00007f503d50c9f3 in futex_wait_cancelable (private=[optimized out], expected=0, futex_word=0x55f485d383b8)     at ..\/sysdeps\/unix\/sysv\/linux\/futex-internal.h:88 88\t..\/sysdeps\/unix\/sysv\/linux\/futex-internal.h: \u041d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430. (gdb) bt #0  0x00007f503d50c9f3 in futex_wait_cancelable (private=[optimized out], expected=0, futex_word=0x55f485d383b8)     at ..\/sysdeps\/unix\/sysv\/linux\/futex-internal.h:88 #1  __pthread_cond_wait_common (abstime=0x0, mutex=0x55f485d38368, cond=0x55f485d38390) at pthread_cond_wait.c:502 #2  __pthread_cond_wait (cond=0x55f485d38390, mutex=0x55f485d38368) at pthread_cond_wait.c:655 #3  0x00007f503d948097 in _frs_signal_wait (signal=0x55f485d38340, filename=0x7f503d7315c8 &quot;fen_server.c&quot;, fileline=298)     at .\/projects\/shared\/libforseti\/code\/thread\/frs_signal.c:250 #4  0x00007f503d728044 in _server_wait (server=0x55f485d38270) at .\/projects\/shared\/libfenrir\/code\/server\/fen_server.c:298 #5  0x00007f503d72822d in fen_server_free (server=0x55f485d38270) at .\/projects\/shared\/libfenrir\/code\/server\/fen_server.c:351<\/code><\/pre>\n<p>  \u0421\u0442\u043e\u043f-\u0441\u0442\u043e\u043f-\u0441\u0442\u043e\u043f, \u043a\u0430\u043a\u043e\u0439 server_free? \u041c\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438 \u043d\u0435 \u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441? \u0412\u0435\u0434\u044c \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f echo!<\/p>\n<p>  \u0418\u043b\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c?<\/p>\n<h3>\u0413\u043b\u0430\u0432\u0430 5. \u00ab\u041e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u00bb<\/h3>\n<p>  \u041c\u044b \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 echo, \u043d\u043e \u0432\u0435\u0434\u044c \u0432 exec \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0435 \u0432 shell-\u0441\u0440\u0435\u0434\u0435 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0442\u043e\u0433\u043e \u0436\u0435 system. \u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 \/bin\/echo, \u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u0440\u043e\u043f\u0430\u043b\u0430. \u041d\u043e \u0432\u0435\u0434\u044c \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u0434\u0430\u0435\u043c \u043d\u0435\u0432\u0435\u0440\u043d\u0443\u044e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f exec \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u0449\u0430\u0435\u043c \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e\u2026<\/p>\n<pre><code class=\"cpp\">        execve(arguments[0], arguments, environ);         exit(EXIT_FAILURE);<\/code><\/pre>\n<p>  \u041d\u0443 \u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f exit. \u041d\u043e \u043a\u0430\u043a \u044d\u0442\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440?<\/p>\n<pre><code class=\"cpp\">\/*! \\brief \u0414\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u044f *\/ static void _free(void) __attribute__((destructor)); static void _free(void) {     fen_server_free(g_server);     frs_inf(&quot;\u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0435\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d&quot;); }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0441\u0442\u0430\u043b\u043e \u043d\u0430 \u0441\u0432\u043e\u0438 \u043c\u0435\u0441\u0442\u0430. \u042d\u0442\u0438 \u0434\u0432\u0430 \u0431\u0430\u0433\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/g0\/sk\/-s\/g0sk-sf74ratdovfkkoqny7ongu.png\"><\/p>\n<p>  \u0427\u0442\u043e \u0436, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0410 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043c\u044b \u044d\u0442\u043e \u043a\u0430\u043a \u0432 \u0430\u043d\u0435\u043a\u0434\u043e\u0442\u0435 \u043f\u0440\u043e \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u043e\u0434\u0438\u043d \u0443\u0434\u0430\u0440 \u043c\u043e\u043b\u043e\u0442\u043a\u043e\u043c:<\/p>\n<p>  <b>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b<\/b> \u00ab_\u00bb \u043a \u0441\u043b\u043e\u0432\u0443 exit:<\/p>\n<pre><code class=\"cpp\">int pid = fork(); switch (pid) {     case -1 :         return BADFORK;     case 0 :         close(stdout);         close(stderr);         open(fileout, O_CREAT | O_WRONLY, 0777);         open(fileerr, O_CREAT | O_WRONLY, 0777);         execve(arguments[0], arguments, environ);         _exit(EXIT_FAILURE);     default :         return pid; }<\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u041d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u0430 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 atexit \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041d\u0430 \u0441\u0442\u0430\u0440\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445 glibc \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 _exit, \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0445 \u0432\u044b\u0437\u043e\u0432 exit_group \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043d\u0438\u0442\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u0427\u0442\u043e \u0436, \u043e\u0431\u0430 \u0431\u0430\u0433\u0430 \u043f\u043e\u0431\u0435\u0436\u0434\u0435\u043d\u044b, \u0430 \u0432\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u00ab\u0430\u043f\u043e\u0444\u0435\u043d\u0438\u044f\u00bb, \u00ab\u0442\u0435\u0431\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0443\u0434\u0438\u0442\u0441\u044f\u00bb, \u00ab\u0441\u0432\u044f\u0437\u0438 \u043d\u0435\u0442\u00bb. \u041f\u043e\u0439\u0434\u0443 <a href=\"https:\/\/www.libfox.ru\/462964-2-ayzek-azimov-konets-vechnosti.html\" rel=\"nofollow\">\u043f\u0435\u0440\u0435\u0434\u0432\u0438\u043d\u0443<\/a> \u044f\u0449\u0438\u043a \u043d\u0430 \u043f\u043e\u043b\u043a\u0435, \u0430 \u0442\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u043a\u043e\u0441\u043c\u043e\u0441 \u043d\u0435 \u043f\u043e\u043b\u0435\u0442\u0438\u0442.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/505926\/\"> https:\/\/habr.com\/ru\/post\/505926\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/505926\/\">\n<blockquote><p><i>\u0412 1958 \u0433\u043e\u0434\u0443 \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0439 \u043d\u0435\u0439\u0440\u043e\u043f\u0441\u0438\u0445\u043e\u043b\u043e\u0433 \u041a\u043b\u0430\u0443\u0441 \u041a\u043e\u043d\u0440\u0430\u0434 \u0432\u0432\u0435\u043b \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u0430\u043f\u043e\u0444\u0435\u043d\u0438\u044f\u00bb (\u043e\u0442 \u043b\u0430\u0442. apophene \u2014 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435, \u0434\u0435\u043b\u0430\u0442\u044c \u044f\u0432\u043d\u044b\u043c; \u0442\u0435\u0440\u043c\u0438\u043d \u0432\u043e\u0441\u0445\u043e\u0434\u0438\u0442 \u043a \u0442\u0435\u043a\u0441\u0442\u0430\u043c \u0440\u0435\u043b\u0438\u0433\u0438\u043e\u0437\u043d\u044b\u0445 \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u0438\u0439, \u0433\u0434\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u043d\u0430\u043d\u0438\u0435, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u043c\u043e\u0435 \u0432\u043d\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u044f), \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044f \u043f\u043e\u0434 \u043d\u0438\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0441\u0438\u0445\u0438\u043a\u0438, \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u0432 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u0430\u0445 \u0438\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0432 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f\u0445. \u0418\u043b\u043b\u044e\u0437\u0438\u044f \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438. \u041d\u0430\u0448 \u043c\u043e\u0437\u0433 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0449\u0435\u0442 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0438\u0440\u0440\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435\u0442. \u0421\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0447\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f\u043c \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044f\u043c. \u042d\u0442\u043e \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0430\u043f\u043e\u0444\u0435\u043d\u0438\u0435\u0439. \u0412 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u2013 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u043e\u0434\u0430.<\/i><br \/>  <i>\u041d\u0435\u043f\u0440\u044f\u0445\u0438\u043d \u041d. \u00ab\u042f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u0443\u044e \u0442\u043e\u0431\u043e\u0439\u00bb<\/i><\/p><\/blockquote>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 IT \u0440\u0435\u0441\u0443\u0440\u0441\u0435? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0435\u0439 \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0432 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0445 \u0435\u0451 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c. \u0420\u044f\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043c\u0430\u0441\u0441\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u043e\u0439 \u043a\u043e\u0434\u0430\u2026 \u0418\u043b\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u044c \u2014 \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u0438\u0433\u0440\u044b \u0440\u0430\u0437\u0443\u043c\u0430, \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-305033","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/305033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=305033"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/305033\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=305033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=305033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=305033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}