From: Lynn Q. <quam@AI.SRI.COM> - 2014-05-28 17:41:03
|
In this example running sbcl-1.0.54 running on Fedora Linux , run-program run cat as a subprocess using a pipe to communicate the output of cat to sbcl. When the output is consumed, the process is killed, but the pipe stays alive, as verified using the Linux "System Monitor". Calling this test function many times will eventually exhaust the limit of open file descriptors. I have tried many things to cause the pipe to go away, but have not succeeded. (defun test-run-program-cat () (let ((cat-proc (sb-ext::run-program "/bin/cat" '("/tmp/pipe-test") :output :stream :wait nil))) (sb-ext::process-close cat-proc) (sb-ext::process-kill cat-proc 9 :pid) )) ;;; create the file "/tmp/pipe-test" (with-open-file (st "/tmp/pipe-test" :direction :output) (format st "foo~%")) (test-run-program-cat) |
From: Stas B. <sta...@gm...> - 2014-05-28 18:23:17
|
Lynn Quam <quam@AI.SRI.COM> writes: > In this example running sbcl-1.0.54 running on Fedora Linux , > run-program run cat as a subprocess using a pipe to communicate the > output of cat to sbcl. When the output is consumed, the process is > killed, but the pipe stays alive, as verified using the Linux "System > Monitor". Calling this test function many times will eventually > exhaust the limit of open file descriptors. > > I have tried many things to cause the pipe to go away, but have not > succeeded. > > (defun test-run-program-cat () > (let ((cat-proc (sb-ext::run-program "/bin/cat" '("/tmp/pipe-test") > :output :stream :wait nil))) > (sb-ext::process-close cat-proc) > (sb-ext::process-kill cat-proc 9 :pid) > )) > > ;;; create the file "/tmp/pipe-test" > (with-open-file (st "/tmp/pipe-test" :direction :output) (format st > "foo~%")) > > (test-run-program-cat) You are using a two year old version SBCL, and the problem was fixed two years ago. Did you really expect to get way reporting a bug without testing on the latest version? -- With best regards, Stas. |