system

Mattepuffo's logo
Usare la icon tray in Java

Usare la icon tray in Java

La icon tray è quella zona della barra delle applicazioni in cui i programmi messi a icona si nascondono.

In genere è messa nella parte a destra, dove troviamo anche le icone della batteria, l'antivirus, la rete, ecc...

Vediamo oggi come fare per usare la icon tray nei nostri programmi scritti in Java.

Tutto ciò è stato testato su Windows 7 e Linux con KDE, ma in toeria non dovremmo avere problemi su versioni precedenti di Windows o su altri DE che usano la icon tray (tipo MATE o CINNAMON).

Non so invece come si comporta questo codice su Mac OS X.

Crieamo un metodo privato che poi richiamiamo in fondo al csotruttore del nostro JFrame.

Mattepuffo's logo
Usare rc.local con Systemd

Usare rc.local con Systemd

Ultimamente molte distro hanno fatto il salto a Systemd per la gestione di seriviz, demoni e quan'atlro.

In molti casi un problema è stato quello di lanciare tutte le attività e programmi che avevamo messo in avvio automatico grazie al file /etc/rc.local.

Vediamo come poter usare ancora questo file insieme a Systemd.

Diventate root e spostatevi nella directory dove ci sono tutti i file con estensione .service:

# cd /usr/lib/systemd/system

Ad essere sincero non so se è lo stesso percorso per tutte le distro; di sicuro lo è per Arch.

Mattepuffo's logo
Eseguire comandi di sistema in C++

Eseguire comandi di sistema in C++

Eseguire comandi di sistema in C++ non è molto complicato.

Per farlo possiamo usare la funzione system().

Eccovi un semplice esempio su Linux:

#include <stdio.h>

#include <stdlib.h>

int main()

{

    printf("Eseguo comando ls");

    system("ls -l");

    exit(0);

}

Il problema di questa funzione è che anche se stampa il risultato del comando, comunque ritorna un int.

Quindi se ad esempio vogliamo stampare il risultato in un componente grafico tipo un QPlainTextEdit (che richiede quantomeno un oggetto string e non un int) come possiamo fare?

Ci sono diverse soluzioni; io ho usato la funzione popen().

Nel caso specifico ho una piccola classe con una funzione che esegue il comando nmap con i vari parametri.