/usr/share/SuperCollider/HelpSource/Classes/Pipe.schelp is in supercollider-common 1:3.8.0~repack-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | class:: Pipe
summary:: pipe stdin to, or stdout from, a unix shell command
related:: Classes/UnixFILE
categories:: Files
description::
Pipe stdin to, or stdout from, a unix shell command. Pipe treats the shell command as if it were a UnixFILE, and returns nil when done. See link::Classes/UnixFILE:: for details of the access methods. Pipe must be explicitly closed. Do not rely on the garbage collector to do this for you!
ClassMethods::
method::new
argument::commandLine
A link::Classes/String:: representing a valid shell command.
argument::mode
A link::Classes/String:: representing the mode. Valid modes are "w" (pipe to stdin) and "r" (pipe from stdout).
InstanceMethods::
private::prClose, prOpen
method::open
Open the file.
argument::commandLine
A command line link::Classes/String:: passed to popen.
argument::mode
A link::Classes/String:: passed to popen, so should be one of: "r","w"
method::close
Closes the pipe, waiting for the command to finish. You must do this explicitly before the Pipe object is garbage collected.
returns:: The exit status of the command (an Integer).
Examples::
note::
For anyone still using OS X 10.3, unix commands like pipe do not work when the server is booted; quit the server, otherwise sc crashes. More recent OS X is not affected.
::
code::
// this pipes in stdout from ls
(
var p, l;
p = Pipe.new("ls -l", "r"); // list directory contents in long format
l = p.getLine; // get the first line
while({l.notNil}, {l.postln; l = p.getLine; }); // post until l = nil
p.close; // close the pipe to avoid that nasty buildup
)
::
A more time-intensive request:
code::
(
var p, l;
p = Pipe.new("ping -c10 sourceforge.net", "r"); // list directory contents in long format
l = p.getLine; // get the first line
while({l.notNil}, {l.postln; l = p.getLine; }); // post until l = nil
p.close; // close the pipe to avoid that nasty buildup
)
::
|