# Petite commande "system"



## PsychoH13 (12 Avril 2006)

Bonjour à tous,

voilà le topos, mon prof de C++ nous adonné un petit programme en correction d'un exercice, dans celui-ci se trouve une petite fonction faisant partie de la bibliotèque cstdlib :

system();

Dans son programme il l'utilise de telle sorte: 	system("cls");
Ceci a pour but dans la console d'effacer les données précédemment écrites, sur pc ça marche, seulement sur mac il me dit que la commande "cls" est inconnue.

Ma question est la suivante: quelle est la commande équivalente sur Mac OS X ?

Merci d'avance


----------



## Aurélien-A (12 Avril 2006)

PsychoH13 a dit:
			
		

> Bonjour à tous,
> 
> voilà le topos, mon prof de C++ nous adonné un petit programme en correction d'un exercice, dans celui-ci se trouve une petite fonction faisant partie de la bibliotèque cstdlib :
> 
> ...


Sous UNIX:

#include <stdlib.h>

........

system("clear");


----------



## ntx (12 Avril 2006)

Les commandes systèmes sont totalement différentes entre un Unix et Windows. C'est ce genre de lignes de code qui crée des incompatibilités entre ces deux plates-formes. Si tu veux y faire appel dans un programme multi-plate-forme, il faut les traiter par exemple en pré-processing en faisant un cas "Windows" et un cas "Unix" (autres quoi  )


----------



## PsychoH13 (12 Avril 2006)

J'avais déjà essayé system("clear"); mais ça ne marchait pas, et de plus il me dit "TERM environment variable not set."


----------



## tatouille (12 Avril 2006)

PsychoH13 a dit:
			
		

> J'avais déjà essayé system("clear"); mais ça ne marchait pas, et de plus il me dit "TERM environment variable not set."



c'est normal tu excutes sous la console c'est a toi de choisir dans quel thread et quel term tu lances la cmd


----------



## PsychoH13 (18 Avril 2006)

Comment on fait pour que ce "system("clear")" fonctionne quelque soit l'endroit où on l'exécute???


----------



## tatouille (18 Avril 2006)

PsychoH13 a dit:
			
		

> Comment on fait pour que ce "system("clear")" fonctionne quelque soit l'endroit où on l'exécute???



tu utilises des cross lib ou alors tu fais une compile conditionnelle 

quand tu programmes tu tests ou tu restes comme ca à attendre ?
system ne fait qu'executer une commande sur le prompt machine 
tu definies une macro __POSIX__ si c'est posix ->
BASH (il faut que le prompt du user soit BASH ici )

#else
le systeme qui à des commandes dos d'un autre age

gcc test.c -o test

test.c

```
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int i=0;
    
    for( i; i<10 ;++i)
    {
        printf(" -- Loop index : %i --\n\n", i );
        system("ls -la");
        system("tput cup 12 20");
        system("sleep 2");
        system("clear");
    }
    
    return 1;
}
```
sinon

man ncurses
man clear
man system


----------

