dovresti poter gestire le pipe (ma sarà poi femminile?), che sono quasi sicuro esistono anche sotto dos.
Io per applicazioni gui sotto linux, sia per kylix che per lazarus, utilizzo la libreria libc che ha alcune funzioni che gestiscono le pipe (che sono poi le stesse funzioni che si utilizzano in C).
Però sai bene che per unix tutto è un file, coso che non è per il dos.

Codice PHP:

var
 ...
  
str string;

  
CmdArr : array[0..512of char;
  
StrArr : array[0..512of char;
  
buf pointer;
  
size longint;
  
  
integer;
  
PIOFILE;
  
pPipeStr Pointer;

...

// in str c'è il comando (devi finire con #0)
// potrebbe essere str := 'ls -la ' +#0; (o l'equivalente dos str := 'DIR ' + #0;
               
StrCopy(cmdArr, @str[1]);

// apro la comunicazione 
                 
:= popen(CmdArr'r');
                 if 
assigned(Fthen
                 begin
                      repeat
// posso usare le normali funzioni di input
// leggi riga dopo riga come se apparissa sul monitor
                        
pPipeStr := fgets(StrArr1024F);
// lo converte poi con StrPas o simili.

                      
until not Assigned(pPipeStr);
// ricordiamoci di chiudere la comunicazione
                      
pClose(F);
                 
end;

// posso anche scrivere su un pipe, anche se è meno frequente
// doverlo fare tra una applicazione gui ed una console 
ciao
sergio