Перавага выкарыстання systemu замест open3?

Старонка systemu кажа:

<�Р> systemu можна выкарыстоўваць на любой платформе, каб вярнуць статус, стандартны вывад і стандартны паток памылак любой каманды. у адрозненне ад іншых метадаў, такіх як open3/popen4 існуе нулявая небяспека поўных труб або шматструменных праблем вісіць ваш працэс або подпроцесс.

(Https://github.com/ahoward/systemu)

Можа хто-небудзь растлумачыць гэта крыху?

3

1 адказы

Метады як POPEN і розныя яго працягу зручныя і з'яўляюцца часткай чаканага API для поўнай бібліятэкі ўводу/высновы.

Тым не менш, яны павінны быць выкарыстаны альбо выпадкова або асцярожна, таму што яны схільныя да тупіковай сітуацыі. Па выпадкова, я маю на ўвазе, калі вы абодва чытаць і пісаць з каманды, ён усё яшчэ ў парадку, пакуль вы альбо не пісаць шмат ці не шмат чытаць. Старанна, я маю на ўвазе, вы можаце перамяшчаць вялікія аб'ёмы дадзеных, але толькі калі вы трымаеце ўнутраныя дэталі аперацыі ў выглядзе і наўмысна інжынер супраць тупіка.

Уявіце сабе пісаць шмат матэрыялу для вашай каманды popened , а затым чытае вынік. Калі вы напішаце больш, чым труба будзе буфер, то ваш працэс будзе спаць. Гэта нармальна на практыцы большую частку часу, але што, калі каманда павінна напісаць шмат рэчаў? Цяпер гэта можа спаць і не дачытаць ўваходныя дадзеныя, якія вы адпраўляеце. Вы не паспееце адпраўкі ўваход, так што вы ніколі не будзеце прачынацца і чытаць вынікі.

Тупік!

2
дададзена