Fedora Online Forum

Il forum della comunità italiana di Fedora

#1 31-05-2017 22:07:50

Sandro1972
Fedora nel sangue
Da Saronno
Registrato: 11-05-2008
Messaggi: 4'786

[Risolto] Pascal: far eseguire comandi bash.

Ave .... dopo un casino di anni (hmmm almeno 25) mi è venuto lo "sghiribizzo" di giocare un po' col Pascal (sinceramente usai il turbo su Olivetti M24 alle superiori e UCSD Pascal per apple ][).

La mia domanda è semplice ovvero:

E' possibile lanciando un programma binario compilato con sorgenti in Pascal far eseguire comandi "bash" ?
Se no ... allora chiedo: forse è possibile con python ?
In caso affermativo invece ... vi chiedo che sintassi usare.

Faccio un esempio molto banalissimo (da asilo.....);
(Ah premetto che non uso Lazarus ma scrivo con nano e compilo con fpc) ....

Dunque il mio "Program Spegni" (tanto per far un minuscolo esempio) vorrebbe una volta avviato far eseguire in bash il comando "shutdown -hP HH:MM &" quindi il comando "disown shutdown".

Program Spegni;
        VAR ore,minuti:string[2];
        comando:string;
Begin
        write('Inserisci ora: ');
        readln(ore);
        write('Inserisci minuti: ');
        readln(minuti);
        comando:='shutdown -hP '+ore+':'+minuti+'&';
        writeln(comando);
        writeln('disown shutdown');
end.

Chiaramente, le ultime 2 istruzioni mi son servite solo per vedere se l'output era corretto o meno. Ma ciò che mi interessa è, al posto del "writeln" , far in modo che vi sia per esempio un "exec".
Perdonate la mia ignoranza ... spero non essermi spiegato male. (abbiate pazienza ... sono obsoleto ed arrugginito big_smile domani vado a comprare3 il "flessibile" big_smile)

Ciao smile

Ultima modifica di Sandro1972 (03-06-2017 01:25:52)


...Da ogni forza che incatena il mondo, l'uomo si libera se consegue controllo di sè...
(J. W. Goethe)

Non in linea

#2 01-06-2017 06:54:42

Moreno
Fedora nel sangue
Registrato: 05-03-2009
Messaggi: 1'334

Re: [Risolto] Pascal: far eseguire comandi bash.

Ciao

Ah PASCAL, è stato il mio primo amore, ci feci un megaimpianto robotizzato sul finire degli anni 80.

Che compilatore usi FreePASCAL o GNU Pascal?

Per FreePascal il comando è RunCommand


Ciao Ciao, Moreno


Io vado ovunque dove ci sia Linux.
Avatar by moonlight-dream.

Non in linea

#3 01-06-2017 08:04:41

lablinux
Pinguino avanzato
Da Rho, Milano
Registrato: 08-04-2009
Messaggi: 321

Re: [Risolto] Pascal: far eseguire comandi bash.

Non per fare il solito rompi scatole, ma una ricerca su google? Il primo risultato


Linux counter home page #501787
Linux machine #5389505

Non in linea

#4 01-06-2017 19:48:20

Sandro1972
Fedora nel sangue
Da Saronno
Registrato: 11-05-2008
Messaggi: 4'786

Re: [Risolto] Pascal: far eseguire comandi bash.

@lablinux .... non sei mica un rompiscatole ... al contrario; Il problema è che non essendo io esperto, già questo post mi risulta di difficile comprensione) _'_ Cercavo un aiuto in italiano ... tutto qui smile

@Moreno ... Grazie 1000 di esssere intervenuto smile

Comunque ... non riesco ancora a capire come dovrei modificare il programmino sopracitato.
Sto facendo qualche tentativo; serve dichiarare in USES "qualcosa in particolare" ?

Scusate mia ignoranza neutral

Ultima modifica di Sandro1972 (01-06-2017 20:26:09)


...Da ogni forza che incatena il mondo, l'uomo si libera se consegue controllo di sè...
(J. W. Goethe)

Non in linea

#5 01-06-2017 23:01:22

Sandro1972
Fedora nel sangue
Da Saronno
Registrato: 11-05-2008
Messaggi: 4'786

Re: [Risolto] Pascal: far eseguire comandi bash.

Ok .. ho trovato una soluzione forse solo "temporanea" aggiungendo la USES "unix".

Inserisci ora: 07
Inserisci minuti: 42
Il sistema verrà arrestato alle ore 07:42
ci74771ht ~ # ps aux|grep shutdo
root     27585  0.0  0.0   4160   648 pts/2    S    00:58   0:00 shutdown -hP 07:42

Però ho degli warnings dopo compilazione.

Il sorgente quindi funzionante attualmente è:

ci74771ht ~ # cat Spegni.pas 
Program Spegni;

uses
  Classes, sysutils, process,unix;

        VAR ore,minuti:string[2];
        comando:string;
        s:ansistring;

Procedure Clear_old;
    begin;
        fpsystem('clear');
        fpsystem('shutdown -c');
        writeln('ho annullato il precedente shutdown');
    end;

Begin
    Clear_old;
    writeln;
    write('Inserisci ora: ');
    readln(ore);
    write('Inserisci minuti: ');
    readln(minuti);
    comando:=' shutdown -hP '+ore+':'+minuti+'&';
    s:=comando;
    fpsystem(s);
    writeln('Il sistema verrà arrestato alle ore '+ore+':'+minuti);
end.

Però ottengo questo output:

ci74771ht ~ # fpc Spegni.pas 
Free Pascal Compiler version 2.6.4 [2017/03/29] for x86_64
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling Spegni.pas
Spegni.pas(11,2) Warning: Symbol "fpSystem" is deprecated: "use ansistring version"
Spegni.pas(12,2) Warning: Symbol "fpSystem" is deprecated: "use ansistring version"
Linking Spegni


/usr/bin/ld: attenzione: link.res contiene sezioni di output; forse è stata dimenticata -T
21 lines compiled, 0.0 sec 
2 warning(s) issued

Che significa : "use ansistring version ?"

Mumble mumble .... come considerare la questione ?
Se fpsystem è "deprecato" .. beh sarà meglio capire come funziona RunCommand ?

Vi chiedo, se possibile farmi un esempio riguardo come utilizzare RunCommand. (scusate se ho bisogno della "use pedantic") neutral

Ho bisogno di qualche "chiarimento in merito".

Grazie In anticipo a Tutti smile

Ultima modifica di Sandro1972 (06-07-2017 02:46:28)


...Da ogni forza che incatena il mondo, l'uomo si libera se consegue controllo di sè...
(J. W. Goethe)

Non in linea

#6 05-06-2017 08:30:41

lablinux
Pinguino avanzato
Da Rho, Milano
Registrato: 08-04-2009
Messaggi: 321

Re: [Risolto] Pascal: far eseguire comandi bash.

Mi spiace ma su freepascal non so aiutarti. C'è qualcosa sul wiki di lazarus (perché non lo usi?) che parla di questo problema. Questo è il link che ho trovato

Ultima modifica di lablinux (05-06-2017 08:35:29)


Linux counter home page #501787
Linux machine #5389505

Non in linea

#7 05-06-2017 19:44:47

Sandro1972
Fedora nel sangue
Da Saronno
Registrato: 11-05-2008
Messaggi: 4'786

Re: [Risolto] Pascal: far eseguire comandi bash.

Grazie lablinux.
Mi soono iscritto ad un forum italiano riguardante fpc e Lazarus. solo che ancora non mi hanno accettato .... boh ... mumble ... mumble ...
Magari ... è un sito "morto" .. comunque cercherò nello specifico.

Certo mi piacerebbe creare un programma con GUI usando Lazarus ... però penso che sia meglio ricominciare passo passo ... perciò prima vorrei "riprendere/ripassare" le cose "basilari" in modo da poter aquisire una certa sicurezza personale; in II tempo .. se tutto va bewne cercare di "ampliare" quindi passare a Lazarus smile

Ti ringrazio vivamente per le tue informazioni e partecipazione smile

Se riuscirò a fare passi avanti ... vi terrò informati smile

Grazie Ancora smile

Ultima modifica di Sandro1972 (05-06-2017 19:52:39)


...Da ogni forza che incatena il mondo, l'uomo si libera se consegue controllo di sè...
(J. W. Goethe)

Non in linea

#8 06-06-2017 08:00:54

lablinux
Pinguino avanzato
Da Rho, Milano
Registrato: 08-04-2009
Messaggi: 321

Re: [Risolto] Pascal: far eseguire comandi bash.

[ot]Perché Pascal? Ci sono linguaggi migliori, specie quelli interpretati tipo python o ruby. Se proprio ti server un compliato il C o C++ ad oggetti [/ot]


Linux counter home page #501787
Linux machine #5389505

Non in linea

#9 10-06-2017 18:33:15

Sandro1972
Fedora nel sangue
Da Saronno
Registrato: 11-05-2008
Messaggi: 4'786

Re: [Risolto] Pascal: far eseguire comandi bash.

Egregio lablinux ... mah non c'è una ragione ben precisa .... così , volevo dopo tanti anni diciamo "togliere la ruggine" smile

Certo Python è molto interessante ... anche p'erchè sfrutta nativamente i "numeri complessi" perciò buon aiuto per chi magari ha a che fare con per esempio l'elettrotecnica ... (se dico scemate correggimi neutral)

Comunque .. fra le varie cose che usando un apple ][ con 64 KB di ram quindi andavo sempre in "overflow" oppure "redim'd array error" ... volevo capire se ad oggi sia possibile un "ridimensionamento di una matrice bidimensionale in Pascal".

Python lo ritengo molto interessante; anche molto performante. Però affronto una cosa per volta (haha non sono in "multithreading" neuronalmente big_smile. Magari quel che chiedo è un "tallone d'Achille" per Pascal ?
Non so neutral

Ultima modifica di Sandro1972 (10-06-2017 18:34:54)


...Da ogni forza che incatena il mondo, l'uomo si libera se consegue controllo di sè...
(J. W. Goethe)

Non in linea

Piè di pagina