From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 3F4F546970E for ; Tue, 17 Dec 2019 15:54:23 +0300 (MSK) Received: by mail-lf1-f68.google.com with SMTP id 203so6874402lfa.12 for ; Tue, 17 Dec 2019 04:54:23 -0800 (PST) From: Cyrill Gorcunov Date: Tue, 17 Dec 2019 15:54:16 +0300 Message-Id: <20191217125420.20881-1-gorcunov@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v6 0/4] popen: Add ability to run external process List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tml In this series we provide a way to execute external binaries from inside of Lua scripts, control children process and communicate with their stdin/out/err streams. In v6 I reworked the API using coio as main nonblocking i/o engine. (v3,4,5 are kept internal for testing reasons). Probably the best way to start read this series is the last patch where real examples of usage are present. Note the tests won't pass because they require our test-run engine to unblock 'popen' module. Still if do these commands inside tarantool console they work as expected and give enough information about API. Issue https://github.com/tarantool/tarantool/issues/4031 Branch https://github.com/tarantool/tarantool/tree/gorcunov/gh-4031-popen-6 Cyrill Gorcunov (4): coio: Export helpers and provide coio_read_fd_timeout popen: Introduce a backend engine popen/lua: Add popen module popen/test: Add base test cases src/CMakeLists.txt | 2 + src/box/applier.cc | 2 +- src/lib/core/CMakeLists.txt | 1 + src/lib/core/coio.cc | 41 ++ src/lib/core/coio.h | 31 +- src/lib/core/popen.c | 1204 +++++++++++++++++++++++++++++++++++ src/lib/core/popen.h | 207 ++++++ src/lua/init.c | 4 + src/lua/popen.c | 483 ++++++++++++++ src/lua/popen.h | 44 ++ src/lua/popen.lua | 516 +++++++++++++++ src/main.cc | 4 + test/app/popen.result | 234 +++++++ test/app/popen.test.lua | 91 +++ 14 files changed, 2858 insertions(+), 6 deletions(-) create mode 100644 src/lib/core/popen.c create mode 100644 src/lib/core/popen.h create mode 100644 src/lua/popen.c create mode 100644 src/lua/popen.h create mode 100644 src/lua/popen.lua create mode 100644 test/app/popen.result create mode 100644 test/app/popen.test.lua -- 2.20.1