diff --git a/test~coding~readingCppPrograms.fr/docker-compile-and-run b/test~coding~readingCppPrograms.fr/docker-compile-and-run
new file mode 100755
index 0000000000000000000000000000000000000000..9b0aff8437ee68b942998fd76407f82de7e47334
--- /dev/null
+++ b/test~coding~readingCppPrograms.fr/docker-compile-and-run
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+
+usage () {
+    echo docker-compile-and-run [program.cpp]
+    echo
+    echo Compiles and executes a c++ program within a sandbox.
+    echo The standard input and output is passed down to the program.
+    echo The exit status is that of the compiler.
+}
+
+if [ -n $1 ]; then
+    usage
+    exit 0
+fi
+
+ID=`sudo docker run -d crosbymichael/build-essential sleep 1000`
+sudo docker exec -i $ID sh -c "cat > prog.cpp" < $1
+
+if sudo docker exec $ID g++ prog.cpp; then
+   sudo docker exec -i $ID ./a.out
+else
+   exit $?
+fi
+sudo docker rm -f $ID > /dev/null 2>&1