Sélectionner une page

system(“pause”) sous GNU/Linux

Vos professeurs vous demandent d’écrire du C/C++ et ils tiennent mordicus à ce que utilisiez system(“pause”), pourtant disponible uniquement sous Windows…

Voilà un problème que certains d’entre nous ont rencontré… Nos chers professeurs, qui prônent entre autres la portabilité du code et l’efficacité, nous demandent d’utiliser des appels systèmes qui ne sont disponibles que sous l’OS Windows (ou DOS, si votre ordinateur a déjà quelques décennies), et qui de plus, ne sont pas si efficaces que ça.

Pour les gens qui ne supportent pas cet OS, ou simplement aiment le code portable et l’efficacité pour de vrai, aimeront remplacer cette commande inutile *ahem* intéressante par un simple :

// C
getchar();
// Ou encore ça, si vous voulez vraiment avoir un 'retour de chariot'
while(getchar() != '\n');

// C++
cin.get();

Cependant, si les professeurs veulent VRAIMENT que vous utilisiez cette commande sous Linux, alors pas de problème, il suffit de copier ce petit code (offert par un estimé collègue) dans un document vide, et de le déplacer dans /usr/local/bin avec le nom “pause” :

#!/bin/sh
if [[ $@ != "" ]];
	then echo $@
else
	echo "Press ENTER to continue."
fi
read

Vous remarquerez que vous pouvez donner un argument lors de votre appel, ce que la commande Windows ne permet pas de faire.
Quoi qu’il en soit, à présent votre code fonctionne sous Windows et Linux (à condition d’avoir le fichier “pause” au bon endroit) et c’est ce qu’on voulait…

Comme vous l’avez compris, on peut écrire ses propres commandes systèmes sans aucun problème sous GNU/Linux. Il suffit de les mettre au bon endroit. Un post suivra, qui tentera de résumer la fonction des sous-dossiers racine dans un OS de type GNU/Linux, et ce qu’on peut y mettre exactement.

1 Commentaire

  1. ghuter

    merci ! cela m’a été bien utile …

    Réponse

Poster le commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *