Shutdown & C/C++ [RISOLTO]

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Shutdown & C/C++ [RISOLTO]

Messaggio 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.
Ultima modifica di tgmx il gio 12 apr 2007, 11:11, modificato 1 volta in totale.

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio 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. ;)

Avatar utente
V
Linux 2.x
Linux 2.x
Messaggi: 313
Iscritto il: gio 23 mar 2006, 10:54

Messaggio da V »

Giusto per curiosità, a cosa ti serve?

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio 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

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio 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

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio 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.

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio 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.

Avatar utente
twister
Staff
Staff
Messaggi: 1599
Iscritto il: mar 11 nov 2003, 0:00
Slackware: current
Località: Roma
Contatta:

Messaggio 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

Avatar utente
V
Linux 2.x
Linux 2.x
Messaggi: 313
Iscritto il: gio 23 mar 2006, 10:54

Messaggio 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?

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio 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è?

Avatar utente
V
Linux 2.x
Linux 2.x
Messaggi: 313
Iscritto il: gio 23 mar 2006, 10:54

Messaggio 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ò! ;)

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio da tgmx »

Purtroppo oggi le aziende senza un periodo di stage non ti assumono...

Anche tu metti le mani sui PLC?

Avatar utente
V
Linux 2.x
Linux 2.x
Messaggi: 313
Iscritto il: gio 23 mar 2006, 10:54

Messaggio 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à

Avatar utente
elettronicha
Master
Master
Messaggi: 1712
Iscritto il: mer 13 apr 2005, 0:00
Località: Torino
Contatta:

Messaggio 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. :)

Avatar utente
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Messaggio 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 .

Rispondi