From d47419bb73993580eea677b548b1ce526845ebd2 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 21 Dec 2016 00:11:23 +0300 Subject: [PATCH] os: Implement popen(). --- os/os/__init__.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/os/os/__init__.py b/os/os/__init__.py index ea6a37c9..30452cf0 100644 --- a/os/os/__init__.py +++ b/os/os/__init__.py @@ -254,3 +254,23 @@ def urandom(n): import builtins with builtins.open("/dev/urandom", "rb") as f: return f.read(n) + +def popen(cmd, mode="r"): + import builtins + i, o = pipe() + if mode[0] == "w": + i, o = o, i + pid = fork() + if not pid: + if mode[0] == "r": + close(1) + else: + close(0) + close(i) + dup(o) + close(o) + s = system(cmd) + _exit(s) + else: + close(o) + return builtins.open(i, mode)