C / C++ και system(zenity .....)

tom1972 | Τετ, 09/03/2014 - 11:55 | 2' | 4

Καλημέρα σε όλους ! Μια ερώτηση ...

Άς υποθέσουσουμε ότι καλούμε τη system() της C / C++ με παράμετρο μια εντολή-πρόγραμμα του linux zenity !

Θέλω το zenity να εμφανίζει ένα παράθυρο διαλόγου openDialog.

Η εντολή του zenity επιστρέφει μια τιμή string που είναι η διεύθυνση ενός αρχείου στο δίσκο ...

Ερώτηση :

Έχω το : sytem("zenity ....bla ... bla ... openDialog ... bla ...");

Πως μπορώ να εξάγω αυτή την τιμή μέσα από το string της εντολής :

"zenity ....bla ... bla ... openDialog ... bla ..."

το οποίο πέρνει σαν παράμετρο η system "έξω" σε μια μεταβλητή του προγράμματος C / C++, είτε αυτή είναι καθολική, είτε είναι τοπική, είτε πεδίο σε κλάση  ?

Προσοχή:

Να περάσω από το πρόγραμμα μια τιμή μέσα στην εντολή της zenity το έχω κάνει με ένα τεχνασματάκι.... Θέλω να κάνω το αντίθετο ... από μέσα από της εντολή να την κάνω διαθέσιμη στο πρόγραμμα !!

Δώσε αστέρια!
Σχόλια

Επίσης και το εξής ...

Σε ένα παράθυρο του zenity που είναι διάλογος εισαγωγής τιμής, θέλω αυτή η τιμή μέσα από την εντολή zenity που είναι εντός της system, να γίνει διαθέσιμη στο πρόγραμμα, ώστε να χρησιμοποιηθεί για παράδειγμα σε μια switch.

Tom1972, δεν νομίζω ότι γίνεται τίποτε από τα δύο με την system. Απ'ότι διαβάζω η system δέχεται/ακούει μόνο το return code (π.χ. 0 ή 1) της εκτελεσθείσας εντολής και δεν δίνει σημασία στα όποια data "φτύνει" ή επιστρέφει η εντολή.

H μόνη λύση που βλέπω μέσα από C/C++ (γιατι δεν γράφεις bash ?) είναι η popen

include <stdio.h>

FILE *popen(const char *command, const char *mode); 

Σου επιστρέφει ένα pointer στα data που επιστρέφει η όποια command τρέξεις. Δες το link για πλήρη τεκμηρίωση.

Ευχαριστώ για την απάντηση !

Θα κοιτάξω στο link για να κατατοπιστώ !!

Απλά ήθελα να μετατρέπω κάποιο script σε γλώσσα που να μπορώ να χειριστώ τη σύνταξή της ...

Γενικά θέλω να γράφω προγράμματα αυτόνομα σε C++, Java, που να μην είναι script ...

Η bash είναι λίγο διαφορετική από ότι έχω συνηθήσει !

Αν και στις περιπτώσεις που έχει να χειριστεί κάποιος εντολές συστήματος, η bash μάλλον είναι μονόδρομος ...