Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    [c/linux] prendere stdout di un programma

    ciao a tutti...
    vorrei fare un programma in C che, tra le altre cose, quando fa partire un programma di sistema (ls, oppure mount, etc.) vorrei catturare il suo stdout e metterlo in una area di memoria a cui io possa puntare con una var puntatore di tipo char.
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  2. #2
    devi aprire un pipe.
    Studiati le funzioni popen e pclose che aprono un pipe in lettura o in scrittura, il pipe è monodirezionale.
    Se poi hai domandi falle pure.
    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    non devo fare

    $ ls /miadir | ilmioprogramma

    ma bensì io, all'interno del mio programma, faccio

    system("ls /miadir"); e vorrei ottenere il risultato in qualche modo

    cosa dovrei usare?
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  4. #4
    Come ti è già stato detto usa popen e pclose, sono funzioni estremamente semplici.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    ahhhh...
    perdonami
    io credevo che popen e pclose permettevano di leggere quello che viene fanno con linux

    ls /miadir | grep ciao

    ad esempio...
    non avevo visto che lui prende, appunto, come primo parametro un comando
    ti ringrazio
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.