[C] éxécution dans commande DOS (exec ?)

Résolu/Fermé
ssebounet Messages postés 162 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 22 octobre 2008 - 2 juin 2005 à 11:30
ssebounet Messages postés 162 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 22 octobre 2008 - 2 juin 2005 à 18:23
Bonjour à tous!!!

Je suis actuellement en train de développer un petit programme en C.
J'aurai voulu changer l'heure du pc. j ai trouvé une methode qui fonctionne très bien mais que sous windows.
Je souhaiterai faire cela sous linux aussi.

Si vous savez comment faire je suis preneur!!
Sinon je l'ai déjà réaliser sous java.
De ce fait j'aurai voulu faire le même algorithme.
En faite j'ai un petit soucis! je n arrive pas à éxécuter une commande externe. c'est à dire éxécuter une commande dans le dos. Je recherche donc une fonction similaire à "exec" du java.

voilou merci beaucoup d'avance pour toutes reponses!!!

Séb

7 réponses

system("commande"); ?

sinon il me semble qu'il existe toute une batterie de exec en C : execl, ... consulte le manuel sous linux
0
ssebounet Messages postés 162 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 22 octobre 2008 6
2 juin 2005 à 12:11
ok merci je venais juste de le trouver mais merci beaucoup.

je souhaite maintenant récupérer l'heure système. La fonction que j'avais c'était:

SYSTEMTIME systemTime1;

GetLocalTime( &systemTime1 );

Mais cette fonction n'est valide que sous windows...
Donc je souhaite récupérer l'heure et y ajouter par exemple 2 jours ou en supprimer 2.
je pourais y ajouter deux directement mais si le mois change cela ne fonctionnerai plus!!

Voila pourquoi je recherche ça maintenant. En tout cas merci beaucoup de ta reponse!!!

Séb
0
ssebounet Messages postés 162 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 22 octobre 2008 6
2 juin 2005 à 12:20
En fait j ai trouver ca y est
Mais je me pose une question est ce que time.h est dans les librairie de linux???

car si c est oui c est super cool ca voudrai dire que c est possible!!


Merci d'avance
Séb
0
Essaye ! c le seul moyen de savoir, mais je suis sur que oui. peut etre sys/time.h, mais je pense ke time.h est ok
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ssebounet Messages postés 162 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 22 octobre 2008 6
2 juin 2005 à 12:57
arggggggggggg......;
bon on dirai en effet que cette librairie y est ou comme tu dis elle est dans sys/time.h
mais ca ca fait rien il y a les #ifdef WIN32
donc ce n'est pa un problème!!
mais maintenant le probleme que j ai c est le fait d ajouter les jours ou les heures!!
commme je te disais il y a un probleme si on change de mois uo idem qd on ajoute 10 minutes si on dois changer d heures!
aie aie aie
Merci encore!!
Séb
0
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 7 751
2 juin 2005 à 17:26
Euh j'arrive en route donc j'ai peut être loupé un épisode. Mais si c'est un programme pour linux pourquoi ne pas utiliser un system(...) (ou execvp) couplé avec la commande shell date ?

man execvp
man system
man date
0
ssebounet Messages postés 162 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 22 octobre 2008 6
2 juin 2005 à 18:23
slt excuse j avais pas vu ton message je viens a l instant de le lire mais en faite j ai fini ce que je comptais faire!!!
chuis bien content ca m a mis du temps mais ca fonctione niquel pour linux et windows en tout cas!!!
voici le code!!

void set_date_hour_minute(int day,
int hour,
int minute)
{
/***************/
/* Declaration */
/***************/
struct tm * pdh;
time_t intps;
char changedate[1024];
char changetime[1024];

/******************/
/* Initialization */
/******************/
intps = time(NULL);

/* Add the number of days, hours or minutes */
/* intps is in seconde */
if(day)
intps += (60*60*24)
* day;

if(hour)
intps += (60*60)
* hour;

if(minute)
intps += 60
* minute;

pdh = localtime(&intps);

#ifdef WIN32

/* Preset the date and the time */
strftime( changedate, 81, "date %d-%m-%y", pdh);
strftime( changetime, 81, "time %H:%M", pdh);

/* Set the date and the time of the system */
system(changedate);
system(changetime);

#else

/* Preset the date and the time */
strftime( changedate, 81, "date %m%d%H%M", pdh);

/* Set the clock of the system */
system(changedate);

#endif

return;
}

ceci est donc la fonction qui permet de changer de date ou d heureelle peux tres facilement etre modifier elle n est pas tres compliquer!
j ai mis des commentaires en anglais qui explique le general!!
ceci permet de fonctionner sous les deux OS.

en tout cas merci bien a vous deux qui m avez bien aidé! Merci!
Séb
0