Annotation of Examples/UNIX/Subprocess/Subprocess.h, revision 1.1.1.1

1.1       root        1: /*
                      2:        Subprocess.h    (v10)
                      3:        by Charles L. Oei
                      4:        pty support by Joe Freeman
                      5:        with encouragement from Kristofer Younger
                      6:        Subprocess Example, Release 2.0
                      7:        NeXT Computer, Inc.
                      8: 
                      9:        You may freely copy, distribute and reuse the code in this example.
                     10:        NeXT disclaims any warranty of any kind, expressed or implied, as to
                     11:        its fitness for any particular use.
                     12: */
                     13: 
                     14: #import <objc/Object.h>
                     15: #import <stdio.h>
                     16: 
                     17: /*
                     18:     This subprocess object sends/receives data to/from any UNIX
                     19:     subprocess asynchronously (via vfork/pipe).
                     20:     Its delegate, if any, will receive the following messages:
                     21: 
                     22:        - subprocessDone;
                     23:            // sent when the subprocess exits
                     24:     
                     25:        - subprocessOutput:(char *)buffer;
                     26:            // sent whenever there is data on the standard output pipe;
                     27:            // buffer is only valid until next call
                     28:        
                     29:        - subprocessError:(const char *)errorString;
                     30:            // sent when an error occurs;
                     31:            // if it ever happens, it's usually only at startup time
                     32: */
                     33: 
                     34: 
                     35: #define BUFFERSIZE 2048
                     36: 
                     37: @interface Subprocess:Object
                     38: {
                     39:     FILE *fpToChild;
                     40:     int fromChild;
                     41:     int childPid;
                     42:     id delegate;
                     43:     int masterPty;     // file descriptor for master/slave pty
                     44:     int slavePty;
                     45:     int bufferCount;
                     46:     char outputBuffer[BUFFERSIZE];
                     47: }
                     48: 
                     49: - init:(const char *)subprocessString;
                     50:     // a cover for the below withDelegate:nil, andPtySupport:NO, andStdErr:YES
                     51: 
                     52: - init:(const char *)subprocessString
                     53:     withDelegate:theDelegate
                     54:     andPtySupport:(BOOL)wantsPty
                     55:     andStdErr:(BOOL)wantsStdErr;
                     56:     // optional requests for pseudo terminal support and
                     57:     // redirecting the standard error stream thru standard output
                     58: 
                     59: - send:(const char *)string withNewline:(BOOL)wantNewline;
                     60:     // send the string optionally followed by a new line
                     61: - send:(const char *)string;
                     62:     // sends the string followed by a new line
                     63:     // shorthand for above withNewline:YES
                     64: - terminateInput;
                     65:     // sends an end-of-file (EOF) to the subprocess
                     66:     // (and closes input pipe to child)
                     67: - terminate:sender;
                     68:     // forces the subprocess to terminate (w/ SIGTERM)
                     69: 
                     70: - setDelegate:anObject;
                     71: - delegate;
                     72: 
                     73: @end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.