Vous n'êtes pas identifié(e).

#1 22/01/2017 00:34:47

MrGlloq
Membre

Utilisation d'un argument argv[] en ligne de commande en C comme varia

Bonjour,

Je cherche a savoir comment utiliser des arguments passés en ligne de commande sur un programme compilé en C (sur un Raspberry avec gcc) pour faire une insertion dans la base de donnée.
Si je mets ma valeur en dur dans la requête ça passe bien mais j'aimerais pouvoir passer les variable argv[]
Si je tape mon fichier compilé

insert_postres 1 1115255 66

J'arrive bien a afficher mes arguments avant de lancer la requête avec
printf("%s\n", argv[1]);
printf("%s\n", argv[2]);
printf("%s\n", argv[3]);
mais je n'arrive pas ou ne sais pas comment les faire passer dans la requête SQL

PGresult *res = PQexec(conn, "INSERT INTO log (numero, jour, heure, button, batterie_faible, secondes, serial_remote) VALUES(nextval('log_numero_seq'), current_timestamp, current_timestamp, argv[1], argv[2], current_timestamp, argv[3])");

J'ai mis en dur les argv[] là ou j'aimerais les avoir, mais je ne connais pas la syntaxe, j'ai tenté pas mal de choses sans y arriver, j'ai pas mal cherché mais rien trouvé dessus.

Auriez-vous un peu d'aide a m'apporter là dessus ?

Environnement
Rasperry Pi3
Raspbian Linux Serveur 4.4.43-v7+ #948 SMP Sun Jan 15 22:20:07 GMT 2017 armv7l GNU/Linux
psql (9.4.10)
gcc version 4.9.2 (Raspbian 4.9.2-10)

Je rappel simplement que mon script fonctionne bien, la compilation se passe bien, je cherche uniquement a pouvoir utiliser les arguments de la ligne de commande comme variables pour ma requête.

Par avance, merci

Dernière modification par MrGlloq (22/01/2017 00:37:57)

Hors ligne

#2 22/01/2017 01:02:41

rjuju
Administrateur

Re : Utilisation d'un argument argv[] en ligne de commande en C comme varia

Bonjour,


Regardez du côté de PQexecParams(). Vous avez un exemple d'utilisation ici : http://docs.postgresql.fr/9.6/libpq-example.html
Sinon, pourquoi ne pas plutôt utiliser un langage de script ? Les interface sont généralement beaucoup plus facile à utiliser, et le code plus simple à écrire.  Vous pouvez regarder pgsycopg2 pour python ou DBD::Pg pour Perl.

Hors ligne

#3 22/01/2017 10:08:17

MrGlloq
Membre

Re : Utilisation d'un argument argv[] en ligne de commande en C comme varia

Bonjour et merci pour cette piste, je vais regarder comment passer la variable ergv avec PQexecParams.

J'explique pourquoi je fais ça,
Le module tourne en tant que service en autonome et lis des données qui arrivent sur un Dongle RF sur /dev/ttyUSB0
La je suis en phase de debug et donc pour ça, je veux pouvoir simuler la chaine qui arrive normalement par le Dongle.
A la fin,  l’exécutable fonctionnera sans argument, voila pourquoi je n'utilise pas un langage script ou avec une interface.

Merci pour cette aide, je regarde comment ça fonctionne et je fais un retour ici pour une autre aide ou pour donner la solution pour ceux qui voudrait faire pareil.

Hors ligne

Pied de page des forums