popen

Mattepuffo's logo
Eseguire comandi in Python con subprocess

Eseguire comandi in Python con subprocess

Python è uno di quei linguaggi per cui vale il detto "per eseguire un'operazione ci sono mille modi diversi".

In effetti, a volte, ci sono anche troppi modi diversi in Python.

Prendiamo il caso in cui vogliamo eseguire comandi da shell.

Abbiamo almeno due moduli a disposizione; noi vediamo l'uso di subprocess.

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.