Newsgroup: it.comp.lang.pascal
Titolo: [FP- Unit Unix] - Shell

Qualcuno di voi ha avuto problemi con la funzione Shell delle Unit Unix 
del FP?
A me, dopo circa 5-6 volte che lancio un eseguibile da codice con quella 
funzione, si inchioda tutto.
Siccome però mi capita anche quando uso OpenGL, ho qualche dubbio.
Anche sa ad onor del vero, lanciando contemporaneamente le 4 demo della 
Unit, funzionano regolarmente. Ma insistendo a lanciare (ovvero 
chiudendo e rilanciando).... freeze !!!
Questo sia lanciando l'esecuzione da Lazarus, che il semplice compilato.
Grazie per le eventuali risposte.
Ciao

 Ciao
Che versione di FPC usi, 1.9.6?  Linux O FreeBSD? Riesci a riprodurlo 
con un semplice esempio cosě lo provo anch'io? Magari poi si posta un 
bug report sul sito di Free Pascal.
Ciao, Dean

 Ciao, Dean
Hai ragione e ti chiedo scusa, non ho apportato nessun contributo alla 
discussione:
Free Pascal Compiler version 1.9.6
Lazarus 0.9.4 Beta
Linux Fedora FC3
Il codice, molto banale, vuole solo essere un simil-script per lanciare 
applicazioni Gnome senza passare dal menu.
Lo trovi in fondo alla presente.
Altra cosa: c'è modo di lanciare eseguibili utilizzando su o sudo senza 
necessariamente dover intercettare STDIn STDOut e STDErr?
E se a questa rispondi RTFM ti posso capire ... ;))
Ciao e grazie.
--------------------------------------------------
unit Form1;
{$mode objfpc}{$H+}
interface
uses
   Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Unix,
   ExtCtrls, Buttons, Linux;
type
   { TForm1 }
   TForm1 = class(TForm)
     CmdTerminal: TButton;
     CmdRete: TBitBtn;
     CmdEdit: TButton;
     CmdServices: TButton;
     procedure CmdEditClick(Sender: TObject);
     procedure CmdServicesClick(Sender: TObject);
     procedure CmdTerminalClick(Sender: TObject);
     procedure ReteClick(Sender: TObject);
   private
     { private declarations }
   public
     { public declarations }
   end;
var
   UForm1: TForm1;
implementation
{ TForm1 }
procedure TForm1.CmdEditClick(Sender: TObject);
begin
   shell ('gedit');
end;
procedure TForm1.CmdServicesClick(Sender: TObject);
begin
   shell ('system-config-services');
end;
procedure TForm1.CmdTerminalClick(Sender: TObject);
begin
   shell ('gnome-terminal');
end;
procedure TForm1.ReteClick(Sender: TObject);
begin
   shell ('system-config-network');
end;
initialization
   {$I form1.lrs}
end.

 E se a questa rispondi RTFM ti posso capire ... ;))
Non ho mai risposto così, se uno chiede gentilmente non vedo perchè 
bisogna essere scortesi, si può sempre scegliere di non rispondere, al 
limite :-)
Ciao, Dean.

 limite :-)
Ti ringrazio per il tempo che hai perso con me ... anch'io non conosco 
ancora bene Linux e probabilmente la soluzione č banale, ma non sono 
ancora incappato nella documentazione giusta e nelle pagine man di su  e 
sudo non ci sono indicazioni. In piů sono circa 3 mesi che litigo con 
FC3 (sembra impossibile ma dopo 4-5 reinstallazioni uguali, stesse 
impostazioni, dallo stesso DVD, sulla stessa macchina non hanno mai 
prodotto lo stesso risultato).
Proverň a reinstallare FC3 e FP/Lazarus per l'ennesima volta, per vedere 
se č un problema di installazione/configurazione.
Per quanto riguarda su e sudo ho riscontrato la medesima problematica 
sviluppando la stessa applicazione con gambas2: da shell p.e. 'sudo -c 
system-config-network root' genera un messaggio di errore che mi 
comunica che l'applicazione richiede input sullo stdin (immagino si 
attenda la pwd). L'applicazione FP invece si limita a non far apprire 
nulla, come se il comando non fosse stato lanciato, salvo poi rilevare 
dal system-monitor che č beatamente avviato in backgroud ma a CPU 0%.
Quindi le soluzioni che intravedo sono 2: o trovo il sistema di 
reindirizzare stdin, stdout e stderr in modo tale da soddisfare su o 
sudo o trovo un equivalente dei comandi senza passare da shell. Sempre 
che poi questo non sia "proibito" dalla logica dei comandi stessi per 
motivi di sicurezza di sistema.
Per quanto riguarda le risposte ... era un goffo tentativo di fare un 
motto di spirito ... sei stato senz'altro molto gentile a dedicarmi il 
tuo tempo, ma da programmatore su altri SO e di altri linguaggi so che č 
preferibile perdere piů tempo a cercare documentazione e leggerla, 
piuttosto postare dubbi su un newsgroup. Sopratutto quando si sa che il 
dubbio č dovuto a poca conoscenza degli strumenti a disposizione.
Ti devo due soluzioni ... appena le avrň trovate le posterň qui.
Ciao e ancora grazie