diff --git a/demo/stderr.py b/demo/stderr.py
new file mode 100644
index 0000000000000000000000000000000000000000..7a5286d9ee361e750c3e504f0c3870a8110dbfe5
--- /dev/null
+++ b/demo/stderr.py
@@ -0,0 +1,31 @@
+import os
+
+import pcl_expect.spawn
+import pcl_expect.user
+import pcl_expect
+
+pcl_expect.spawn.stty_init = "-onlcr -ocrnl"
+
+sh, sh_err = pcl_expect.spawn.spawn2(os.getenv("SHELL"))
+user = pcl_expect.user.User(pcl_expect.user.CBREAK)
+
+x = pcl_expect.Controller()
+while x.loop():
+    if x.re(user, "(?s)..*"):
+        sh.send(user.consumed)
+    elif x.re(sh_err, "(?s)..*"):
+        # user.send("STDERR: ``%s''.\n" % repr(sh_err.consumed))
+        user.send(sh_err.consumed)
+    elif x.re(sh, "(?s)..*"):
+        # user.send("STDOUT: ``%s''.\n" % repr(sh.consumed))
+        user.send(sh.consumed)
+    elif x.timeout():
+        pass
+    elif x.eof(user):
+        break
+    elif x.eof(sh_err):
+        break
+    elif x.eof(sh):
+        break
+
+sh.close()
diff --git a/demo/stdout.py b/demo/stdout.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d48d6137f194ec5549b336f9ad722dc3ad2d5f6
--- /dev/null
+++ b/demo/stdout.py
@@ -0,0 +1,26 @@
+import os
+
+import pcl_expect.spawn
+import pcl_expect.user
+import pcl_expect
+
+pcl_expect.spawn.stty_init = "-onlcr -ocrnl"
+
+sh = pcl_expect.spawn.Spawn(os.getenv("SHELL"))
+user = pcl_expect.user.User(pcl_expect.user.CBREAK)
+
+x = pcl_expect.Controller()
+while x.loop():
+    if x.re(user, "(?s)..*"):
+        sh.send(user.consumed)
+    elif x.re(sh, "(?s)..*"):
+        # user.send("STDOUT: ``%s''.\n" % repr(sh.consumed))
+        user.send(sh.consumed)
+    elif x.timeout():
+        pass
+    elif x.eof(user):
+        break
+    elif x.eof(sh):
+        break
+
+sh.close()