From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Marko Rauhamaa Newsgroups: gmane.lisp.guile.user Subject: Re: How to do "ls /tmp > /dev/null" in Guile? Date: Sat, 19 Mar 2016 13:02:36 +0200 Message-ID: <87zitulohf.fsf@elektro.pacujo.net> References: <87zituzs6d.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1458385377 30336 80.91.229.3 (19 Mar 2016 11:02:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 19 Mar 2016 11:02:57 +0000 (UTC) Cc: guile-user@gnu.org To: Alex Kost Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Mar 19 12:02:56 2016 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ahEef-0007qb-UW for guile-user@m.gmane.org; Sat, 19 Mar 2016 12:02:50 +0100 Original-Received: from localhost ([::1]:48275 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ahEef-0005AD-Hi for guile-user@m.gmane.org; Sat, 19 Mar 2016 07:02:49 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40623) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ahEeX-0005A4-6I for guile-user@gnu.org; Sat, 19 Mar 2016 07:02:41 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ahEeW-00068m-9R for guile-user@gnu.org; Sat, 19 Mar 2016 07:02:41 -0400 Original-Received: from [2001:1bc8:1a0:5384:7a2b:cbff:fe9f:e508] (port=33388 helo=pacujo.net) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ahEeW-00067A-2e for guile-user@gnu.org; Sat, 19 Mar 2016 07:02:40 -0400 Original-Received: from elektro.pacujo.net (192.168.1.200) by elektro.pacujo.net; Sat, 19 Mar 2016 13:02:36 +0200 Original-Received: by elektro.pacujo.net (sSMTP sendmail emulation); Sat, 19 Mar 2016 13:02:36 +0200 In-Reply-To: <87zituzs6d.fsf@gmail.com> (Alex Kost's message of "Sat, 19 Mar 2016 13:19:06 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:1bc8:1a0:5384:7a2b:cbff:fe9f:e508 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:12489 Archived-At: Alex Kost : > Hello, in the guile REPL I evaluated the following: > > (with-output-to-port (%make-void-port "w") > (lambda () (display "foo") (newline))) > > and I got no output as expected. Then I tried the following: > > (with-output-to-port (%make-void-port "w") > (lambda () (system* "ls" "/tmp"))) > > but there was an output from "ls" command. So my question is: how to > get rid of this output? When you use ports (which the operating system knows nothing about), Guile needs to actively jockey the data between them. (use-modules (ice-9 popen)) (with-output-to-port (%make-void-port "w") (lambda () (let ((output (open-input-pipe "ls /tmp"))) (let loop () (let ((c (read-char output))) (if (not (eof-object? c)) (begin (write-char c) (loop))))) (close-input-port output)))) Marko