diff --git a/bin/yashchiki b/bin/yashchiki
index 63234d4709ee5e446b0294cefb4d0068f18ec3c4..4626471c02aad987fd2e186a5966c2a9402c621a 100644
--- a/bin/yashchiki
+++ b/bin/yashchiki
@@ -193,14 +193,15 @@ def run(script: str, env: dict, script_args: list = []):
     out = subprocess.Popen(
         cmd, env=env, stdout=subprocess.PIPE,
         stderr=subprocess.STDOUT)
+    os.set_blocking(out.stdout.fileno(), False)
     while True:
-        line = out.stdout.readline()
-        if line:
+        data = out.stdout.read()
+        if data:
             if args.debug:
-                sys.stdout.buffer.write(line)
+                sys.stdout.buffer.write(data)
                 sys.stdout.flush()
-            stdout += line
-        else:
+            stdout += data
+        if out.poll() is not None:
             break
     out.wait()
     stdout = str(stdout, encoding="utf-8")