Esecuzione di istruzioni dal prompt dei comandi e lettura output

di il
5 risposte

Esecuzione di istruzioni dal prompt dei comandi e lettura output

Buongiorno,
è possibile con un'applicazione C eseguire delle istruzioni dal prompt dei comandi, leggere l'output e salvarlo in una variabile?
La mia idea era scrivere alcune istruzioni semplici in un file, come quanta memoria hai libera o quanta memoria totale hai a disposizione (le quali mi restituiscono un numero intero), leggere un' istruzione alla volta, copiarla e eseguirla nel cmd, salvare il numero dell'output e scriverlo in una variabile.
Esistono funzioni legate al prompt dei comandi?
Spero di aver esposto il problema nel modo più chiaro possibile
Grazie in anticipo

5 Risposte

  • Re: Esecuzione di istruzioni dal prompt dei comandi e lettura output

    Https://onlinegdb.com/xBKkXMUPd
    
    #include <stdio.h>
    
    int main(int argc, char *argv[]) {
        for(int i = 1; i < argc; i++)
            printf( "argv[%d]:  %s\n", i, argv[i]);
    
        return 0;
    }
    
  • Re: Esecuzione di istruzioni dal prompt dei comandi e lettura output

    Scusi non ho capito cosa fa questa parte di codice, facendo così stampo i parametri che passo a char *argv[], ma non invoco nessuna istruzione.
    La mia domanda era: con una console application, come faccio ad attivare un comando da cmd ad esempio wmic computersystem get TotalPhysicalMemory, wmic OS get FreePhysicalMemory e salvare il loro risultato in una variabile?
    queste istruzioni restituiscono un intero
    grazie in anticipo
  • Re: Esecuzione di istruzioni dal prompt dei comandi e lettura output

    Salvarle in una variabile per farci cosa dopo?
    Comunque per salvare in un file aggiungi nella riga

    >>file.txt
  • Re: Esecuzione di istruzioni dal prompt dei comandi e lettura output

    Probabilmente nokia123 vuole semplicemente eseguire un comando/programma dalla propria applicazione.
    Dato che si fa riferimento a "cmd" suppongo si stia lavorando in ambiente in Windows.
    Sotto Windows potrebbe utilizzare ShellExecute()/ShellExecuteEx() oppure CreateProcess(); online si trovano numerosi esempi.
    In ogni caso, se ho capito bene la richiesta, il problema principale è catturare lo standard output; qui ho trovato una discussione interessante https://stackoverflow.com/questions/469152/using-shellexecuteex-and-capturing-standard-in-out-err
  • Re: Esecuzione di istruzioni dal prompt dei comandi e lettura output

    candaluar ha scritto:


    Probabilmente nokia123 vuole semplicemente eseguire un comando/programma dalla propria applicazione.
    Basta dirlo, senza dover interpretare ...

    Magari non è necessario catturare lo std output, basta usare qualche API, sapendo cosa ottenere esattamente.

    Per la memoria, può usare la struttura di Windows.h
    
    typedef struct _MEMORYSTATUSEX {
        DWORD dwLength;
        DWORD dwMemoryLoad;
        DWORDLONG ullTotalPhys;		<<--- quello che cerchi
        DWORDLONG ullAvailPhys;
        DWORDLONG ullTotalPageFile;
        DWORDLONG ullAvailPageFile;
        DWORDLONG ullTotalVirtual;
        DWORDLONG ullAvailVirtual;
        DWORDLONG ullAvailExtendedVirtual;
    } MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
    
    ottenendo tutte le informazioni in un solo colpo e velocemente (senza creare Processi), con 3 righe di codice
    
    #include <windows.h>
    ...
    
    	MEMORYSTATUSEX memInfo;
    	memInfo.dwLength = sizeof(MEMORYSTATUSEX);
    	GlobalMemoryStatusEx(&memInfo);
    
Devi accedere o registrarti per scrivere nel forum
5 risposte