Pagina 1 di 2

Shutdown & C/C++ [RISOLTO]

Inviato: gio 12 apr 2007, 10:35
da tgmx
Ciao Ragazzi,

secondo voi è possibile fare un piccolo programma in c/c++ (sotto linux chiaramente) che esegua uno shutdown del sistema (magari usando sudo) ?

GRAZIE.

Inviato: gio 12 apr 2007, 11:10
da tgmx
Ho risolto :D .

Forse ho fatto la richiesta troppo velocemente.
Vorrà dire che può essere utile a qualcun'altro:

Codice: Seleziona tutto

int res = fork();
    if (!res)
    {
        char* const argv[] = { "/usr/bin/sudo","/sbin/shutdown","-h","now", NULL };
        if (execv(argv[0], argv) < 0)
            exit(0);
    }
Ovviamente ho impostato opportunamente sudo. ;)

Inviato: gio 12 apr 2007, 13:57
da V
Giusto per curiosità, a cosa ti serve?

Inviato: gio 12 apr 2007, 14:34
da tgmx
Sto svolgendo una specie di stage in un'azienda in cui sviluppano software di interfaccia con PLC.
Era interessante fare in modo che premendo un interruttore qualsiasi collegato al PLC, questo segnalasse all'interfaccia di spegnere il computer collegato. Piuttosto che togliere drasticamente la corrente :) .

Avevo omesso questa parte perchè la ritenevo un po' noiosa e poco comprensibile :D

Inviato: gio 12 apr 2007, 14:49
da masalapianta
tgmx ha scritto:Sto svolgendo una specie di stage in un'azienda in cui sviluppano software di interfaccia con PLC.
Era interessante fare in modo che premendo un interruttore qualsiasi collegato al PLC, questo segnalasse all'interfaccia di spegnere il computer collegato. Piuttosto che togliere drasticamente la corrente :) .
e perche' in C? una volta che usi sudo (e quindi non hai bisogno di "suiddare" l'applicativo che chiama shutdown), puoi tranquillamente farlo con uno script di shell o con un semplice alias

Inviato: gio 12 apr 2007, 15:09
da tgmx
Perchè l'interfaccia che gira sul PC e si occupa di comunicare col PLC è fatta in C++ e quindi appena dal PLC arriva (tramite ethernet o rs232) la richiesta di spegnere il PC, l'interfaccia lo fa direttamente.

Inviato: gio 12 apr 2007, 15:14
da tgmx
Ora non sarebbe male fare anche il contrario, cioè che all'accensione del PLC questo faccia accendere il PC ma non credo che il PLC possa generare un "wake on lan" quindi eventualmente faccio in modo che il PLC generi il "corto" che viene generato premendo il pulsante del case.

Inviato: gio 12 apr 2007, 17:48
da twister
quindi eventualmente faccio in modo che il PLC generi il "corto" che viene generato premendo il pulsante del case.
In quel caso lo puoi usare anche allo spegnimento con un modprobe button

Inviato: gio 12 apr 2007, 18:00
da V
tgmx ha scritto:Ora non sarebbe male fare anche il contrario, cioè che all'accensione del PLC questo faccia accendere il PC ma non credo che il PLC possa generare un "wake on lan" quindi eventualmente faccio in modo che il PLC generi il "corto" che viene generato premendo il pulsante del case.
Un'altro stagista!!!! ;)

Tramite che rete è collegato il plc? Industrial Ethernet?

Inviato: gio 12 apr 2007, 19:00
da tgmx
twister ha scritto:
quindi eventualmente faccio in modo che il PLC generi il "corto" che viene generato premendo il pulsante del case.
In quel caso lo puoi usare anche allo spegnimento con un modprobe button
Effettivamente non c'avevo pensato. Comunque per lo spegnimento preferisco che l'interfaccia sappia quando avviene così da evitare situazioni indesiderate. :)
Un'altro stagista!!!!
Cioè?

Inviato: gio 12 apr 2007, 19:41
da V
tgmx ha scritto:
twister ha scritto:
quindi eventualmente faccio in modo che il PLC generi il "corto" che viene generato premendo il pulsante del case.
In quel caso lo puoi usare anche allo spegnimento con un modprobe button
Effettivamente non c'avevo pensato. Comunque per lo spegnimento preferisco che l'interfaccia sappia quando avviene così da evitare situazioni indesiderate. :)
Un'altro stagista!!!!
Cioè?
Nel senso che sono anch'io uno stagista :D
Non nel senso della Lewinsky però! ;)

Inviato: gio 12 apr 2007, 20:02
da tgmx
Purtroppo oggi le aziende senza un periodo di stage non ti assumono...

Anche tu metti le mani sui PLC?

Inviato: gio 12 apr 2007, 20:30
da V
Non su i plc, mi occupo di programmazione di microcontrollori, comunicazione fra perfieriche ecc.....

Comunque il mio è ancora uno stage per l'università

Inviato: gio 12 apr 2007, 20:42
da elettronicha
V ha scritto:Non su i plc, mi occupo di programmazione di microcontrollori, comunicazione fra perfieriche ecc.....
che è la stessa cosa che fa un PLC ma in piccolo. :)

Inviato: gio 12 apr 2007, 20:51
da tgmx
elettronicha ha scritto:
V ha scritto:Non su i plc, mi occupo di programmazione di microcontrollori, comunicazione fra perfieriche ecc.....
che è la stessa cosa che fa un PLC ma in piccolo. :)
a parte il linguaggio di programmazione... :)

Fortunatamente tempo fa mi sono imbattuto in "libnodave", una libreria per comunicare via ethernet con plc siemens senza dover necessariamente ricorrere a driver proprietari (siemens appunto) che girano solo sotto windows :D .