J'essaye de convertir un programme C++ de Windows =E0 Linux.
Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction =E9quivalente et mon livre de C=
=20
indique la fonction sleep() mais pas la librairie dans laquelle elle=20
serait contenue.
Toute aide sera la bienvenue.
D'avance merci.
Bonne continuation.
--
Lionel Allorge
Courriel : lionel.allorge@lunerouge.org
Lune Rouge : http://www.lunerouge.org
Film Libre : http://www.filmlibre.org
Terminal Damage : http://www.terminal-damage.org
<------>
"L'ennui dans ce monde, c'est que les idiots sont s=FBrs d'eux
et les gens sens=E9s pleins de doutes." Bertrand Russell
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C indique la fonction sleep() mais pas la librairie dans laquelle elle serait contenue.
NOM sleep - Endormir le processus pour une durée déterminée.
SYNOPSIS #include <unistd.h>
unsigned int sleep (unsigned int nb_sec);
DESCRIPTION sleep() endort le processus jusqu'à ce que nb_sec secondes se soient écoulées, ou jusqu'à ce qu'un signal non-ignoré soit reçu.
Attention le sleep() sous GNU/Linux est en secondes et celui sous Windows en microsecondes je crois.
-- Benoît Sibaud
Salut,
J'essaye de convertir un programme C++ de Windows à Linux.
Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C
indique la fonction sleep() mais pas la librairie dans laquelle elle
serait contenue.
NOM
sleep - Endormir le processus pour une durée déterminée.
SYNOPSIS
#include <unistd.h>
unsigned int sleep (unsigned int nb_sec);
DESCRIPTION
sleep() endort le processus jusqu'à ce que nb_sec secondes se
soient
écoulées, ou jusqu'à ce qu'un signal non-ignoré soit reçu.
Attention le sleep() sous GNU/Linux est en secondes et celui sous
Windows en microsecondes je crois.
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C indique la fonction sleep() mais pas la librairie dans laquelle elle serait contenue.
NOM sleep - Endormir le processus pour une durée déterminée.
SYNOPSIS #include <unistd.h>
unsigned int sleep (unsigned int nb_sec);
DESCRIPTION sleep() endort le processus jusqu'à ce que nb_sec secondes se soient écoulées, ou jusqu'à ce qu'un signal non-ignoré soit reçu.
Attention le sleep() sous GNU/Linux est en secondes et celui sous Windows en microsecondes je crois.
-- Benoît Sibaud
Fabien LE LEZ
On Tue, 08 Jun 2004 15:59:07 -0500, Lionel Allorge wrote:
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
-- ;-) FLL, Epagneul Breton
On Tue, 08 Jun 2004 15:59:07 -0500, Lionel Allorge
<lionel.allorge@lunerouge.com> wrote:
J'essaye de convertir un programme C++ de Windows à Linux.
Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est
difficile, voire impossible, en C++. Mieux vaut te tourner vers une
fonction spécifique à Linux.
On Tue, 08 Jun 2004 15:59:07 -0500, Lionel Allorge wrote:
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
-- ;-) FLL, Epagneul Breton
Loïc Joly
Benoît Sibaud wrote:
Attention le sleep() [...] sous Windows en microsecondes je crois.
Millisecondes.
-- Loïc
Benoît Sibaud wrote:
Attention le sleep() [...] sous
Windows en microsecondes je crois.
Attention le sleep() [...] sous Windows en microsecondes je crois.
Millisecondes.
-- Loïc
Twxs
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
question peut etre bete(je n'ai peut etre pas compris la question), mais pourquoi ne pourrait on pas gerer un temps precis en C++?
Twxs
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est
difficile, voire impossible, en C++. Mieux vaut te tourner vers une
fonction spécifique à Linux.
question peut etre bete(je n'ai peut etre pas compris la question), mais
pourquoi ne pourrait on pas gerer un temps precis en C++?
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
question peut etre bete(je n'ai peut etre pas compris la question), mais pourquoi ne pourrait on pas gerer un temps precis en C++?
Twxs
Pierre Maurette
Twxs typa:
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
question peut etre bete(je n'ai peut etre pas compris la question), mais pourquoi ne pourrait on pas gerer un temps precis en C++? Ce n'est pas C++ qui pose problème (même s'il n'existe rien de
portable), c'est Windows. D'une part il filtre l'accès au système (selon les versions), et d'autre part il décide des tranches de temps allouées à chaque tâche. Disons qu'en continuant à utiliser Windows normalement, il ne faut pas espérer générer des timings plus précis que de une dizaine à quelques dizaines de millisecondes. On peut espérer beaucoup beaucoup mieux en bouclant en attendant une valeur de compteur, mais rien n'en garanti le fonctionnement "à chaque coup". Tout ceci n'a rien à voir avec le C++. Ceci dit, Windows n'affiche clairement aucune prétention dans le domaine du temps réel. -- Pierre
Twxs <Twxs@free.fr> typa:
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est
difficile, voire impossible, en C++. Mieux vaut te tourner vers une
fonction spécifique à Linux.
question peut etre bete(je n'ai peut etre pas compris la question), mais
pourquoi ne pourrait on pas gerer un temps precis en C++?
Ce n'est pas C++ qui pose problème (même s'il n'existe rien de
portable), c'est Windows. D'une part il filtre l'accès au système
(selon les versions), et d'autre part il décide des tranches de temps
allouées à chaque tâche. Disons qu'en continuant à utiliser Windows
normalement, il ne faut pas espérer générer des timings plus précis
que de une dizaine à quelques dizaines de millisecondes. On peut
espérer beaucoup beaucoup mieux en bouclant en attendant une valeur de
compteur, mais rien n'en garanti le fonctionnement "à chaque coup".
Tout ceci n'a rien à voir avec le C++.
Ceci dit, Windows n'affiche clairement aucune prétention dans le
domaine du temps réel.
--
Pierre
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
question peut etre bete(je n'ai peut etre pas compris la question), mais pourquoi ne pourrait on pas gerer un temps precis en C++? Ce n'est pas C++ qui pose problème (même s'il n'existe rien de
portable), c'est Windows. D'une part il filtre l'accès au système (selon les versions), et d'autre part il décide des tranches de temps allouées à chaque tâche. Disons qu'en continuant à utiliser Windows normalement, il ne faut pas espérer générer des timings plus précis que de une dizaine à quelques dizaines de millisecondes. On peut espérer beaucoup beaucoup mieux en bouclant en attendant une valeur de compteur, mais rien n'en garanti le fonctionnement "à chaque coup". Tout ceci n'a rien à voir avec le C++. Ceci dit, Windows n'affiche clairement aucune prétention dans le domaine du temps réel. -- Pierre
Hugues Delorme
"Lionel Allorge" a écrit dans le message de news:ca4gsl$huo$
Bonjour,
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C indique la fonction sleep() mais pas la librairie dans laquelle elle serait contenue.
J'ai répondu à cette question il y a peu dans un forum de développement C++. J'ai testé la fonction suivante seulement sous Windows, tu peux me dire si c'est ok avec Linux? Ce qui suit est une fonction de pause qui fonction sous Windows et les variantes d'Unix:
#ifndef _WIN32 # include <unistd.h> #else # include <windows.h> #endif
#include <iostream> #include <assert.h>
//Suspend execution of the calling process for ms milliseconds. void wait_for (int ms) { assert (ms >= 0);//positive_argument #ifndef _WIN32 usleep (ms); #else Sleep (ms); #endif }
//little test int main () { std::cout << "waiting 2 seconds ..." << std::endl;
wait_for (2000);
std::cout << "finished" << std::endl;
return 0; }
"Lionel Allorge" <lionel.allorge@lunerouge.com> a écrit dans le message de
news:ca4gsl$huo$1@news-reader5.wanadoo.fr...
Bonjour,
J'essaye de convertir un programme C++ de Windows à Linux.
Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C
indique la fonction sleep() mais pas la librairie dans laquelle elle
serait contenue.
J'ai répondu à cette question il y a peu dans un forum de développement C++.
J'ai testé la fonction suivante seulement sous Windows, tu peux me dire si
c'est ok avec Linux?
Ce qui suit est une fonction de pause qui fonction sous Windows et les
variantes d'Unix:
#ifndef _WIN32
# include <unistd.h>
#else
# include <windows.h>
#endif
#include <iostream>
#include <assert.h>
//Suspend execution of the calling process for ms milliseconds.
void wait_for (int ms)
{
assert (ms >= 0);//positive_argument
#ifndef _WIN32
usleep (ms);
#else
Sleep (ms);
#endif
}
//little test
int main ()
{
std::cout << "waiting 2 seconds ..." << std::endl;
"Lionel Allorge" a écrit dans le message de news:ca4gsl$huo$
Bonjour,
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C indique la fonction sleep() mais pas la librairie dans laquelle elle serait contenue.
J'ai répondu à cette question il y a peu dans un forum de développement C++. J'ai testé la fonction suivante seulement sous Windows, tu peux me dire si c'est ok avec Linux? Ce qui suit est une fonction de pause qui fonction sous Windows et les variantes d'Unix:
#ifndef _WIN32 # include <unistd.h> #else # include <windows.h> #endif
#include <iostream> #include <assert.h>
//Suspend execution of the calling process for ms milliseconds. void wait_for (int ms) { assert (ms >= 0);//positive_argument #ifndef _WIN32 usleep (ms); #else Sleep (ms); #endif }
//little test int main () { std::cout << "waiting 2 seconds ..." << std::endl;
wait_for (2000);
std::cout << "finished" << std::endl;
return 0; }
Amerio
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
Attention aussi : sous win32, Sleep a comme effet complementaire de permettre au systeme de donner la main a d'autre thread. Si par ex le programme est une boucle infini while(1) { traitement(); }, l'occupation CPU sera de 100%. En rajoutant Sleep(1) dedans, l'occupation tombe a qlq %. C'est aussi necessaire parfois en programmation multithread pour ne pas qu'un des threads "bouffe" a lui seul tout le cpu. Sleep ne fait donc pas que mettre le programme en sommeil... Sous unix, il faudra peut etre l'associer à yield.
J'essaye de convertir un programme C++ de Windows à Linux.
Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est
difficile, voire impossible, en C++. Mieux vaut te tourner vers une
fonction spécifique à Linux.
Attention aussi : sous win32, Sleep a comme effet complementaire de
permettre au systeme de donner la main a d'autre thread. Si par ex le
programme est une boucle infini while(1) { traitement(); }, l'occupation CPU
sera de 100%. En rajoutant Sleep(1) dedans, l'occupation tombe a qlq %.
C'est aussi necessaire parfois en programmation multithread pour ne pas
qu'un des threads "bouffe" a lui seul tout le cpu.
Sleep ne fait donc pas que mettre le programme en sommeil... Sous unix, il
faudra peut etre l'associer à yield.
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente
A ma connaissance, la gestion d'un temps précis (ici, 50 ms) est difficile, voire impossible, en C++. Mieux vaut te tourner vers une fonction spécifique à Linux.
Attention aussi : sous win32, Sleep a comme effet complementaire de permettre au systeme de donner la main a d'autre thread. Si par ex le programme est une boucle infini while(1) { traitement(); }, l'occupation CPU sera de 100%. En rajoutant Sleep(1) dedans, l'occupation tombe a qlq %. C'est aussi necessaire parfois en programmation multithread pour ne pas qu'un des threads "bouffe" a lui seul tout le cpu. Sleep ne fait donc pas que mettre le programme en sommeil... Sous unix, il faudra peut etre l'associer à yield.
K. Ahausse
"Amerio" a écrit dans le message de news:40c6f42f$0$26912$
Attention aussi : sous win32, Sleep a comme effet complementaire de permettre au systeme de donner la main a d'autre thread. Si par ex le programme est une boucle infini while(1) { traitement(); }, l'occupation CPU
sera de 100%.
Une chose m'étonne si tout le CPU est consacré à la boucle infinie, comme se fait-il que les autres programmes continuent de marcher ?
"Amerio" <amerio@hotmail.com> a écrit dans le message de
news:40c6f42f$0$26912$626a14ce@news.free.fr...
Attention aussi : sous win32, Sleep a comme effet complementaire de
permettre au systeme de donner la main a d'autre thread. Si par ex le
programme est une boucle infini while(1) { traitement(); }, l'occupation
CPU
sera de 100%.
Une chose m'étonne si tout le CPU est consacré à la boucle infinie, comme se
fait-il que les autres programmes continuent de marcher ?
"Amerio" a écrit dans le message de news:40c6f42f$0$26912$
Attention aussi : sous win32, Sleep a comme effet complementaire de permettre au systeme de donner la main a d'autre thread. Si par ex le programme est une boucle infini while(1) { traitement(); }, l'occupation CPU
sera de 100%.
Une chose m'étonne si tout le CPU est consacré à la boucle infinie, comme se fait-il que les autres programmes continuent de marcher ?
tib.motuelle
"Hugues Delorme" wrote in message news:<ca6pkk$qhb$...
"Lionel Allorge" a écrit dans le message de news:ca4gsl$huo$
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause : Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C indique la fonction sleep() mais pas la librairie dans laquelle elle serait contenue.
Ce qui suit est une fonction de pause qui fonction sous Windows et les variantes d'Unix:
#ifndef _WIN32 # include <unistd.h> #else # include <windows.h> #endif
#include <iostream> #include <assert.h>
//Suspend execution of the calling process for ms milliseconds. void wait_for (int ms) { assert (ms >= 0);//positive_argument #ifndef _WIN32
usleep (ms * 1000); // *1000 pour convertir en microsecondes
#else Sleep (ms); #endif }
usleep comme son nom l'indique prend en paramètre un nombre de microsecondes, pas millisecondes. Il me semble aussi que, au moins sur solaris, ce paramètre ne pas être >= 1 000 000. Regarde plutôt du coté de nanosleep qui ne souffre pas de ces limitations et fait partie de la norme POSIX.
Bertrand.
"Hugues Delorme" <h-delorme@techni-modul.fr> wrote in message news:<ca6pkk$qhb$1@news-reader3.wanadoo.fr>...
"Lionel Allorge" <lionel.allorge@lunerouge.com> a écrit dans le message de
news:ca4gsl$huo$1@news-reader5.wanadoo.fr...
J'essaye de convertir un programme C++ de Windows à Linux.
Or je tombe sur la fonction de pause :
Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C
indique la fonction sleep() mais pas la librairie dans laquelle elle
serait contenue.
Ce qui suit est une fonction de pause qui fonction sous Windows et les
variantes d'Unix:
#ifndef _WIN32
# include <unistd.h>
#else
# include <windows.h>
#endif
#include <iostream>
#include <assert.h>
//Suspend execution of the calling process for ms milliseconds.
void wait_for (int ms)
{
assert (ms >= 0);//positive_argument
#ifndef _WIN32
usleep (ms * 1000); // *1000 pour convertir en microsecondes
#else
Sleep (ms);
#endif
}
usleep comme son nom l'indique prend en paramètre un nombre de
microsecondes, pas millisecondes. Il me semble aussi que, au moins sur
solaris, ce paramètre ne pas être >= 1 000 000. Regarde plutôt du coté
de nanosleep qui ne souffre pas de ces limitations et fait partie de
la norme POSIX.
"Hugues Delorme" wrote in message news:<ca6pkk$qhb$...
"Lionel Allorge" a écrit dans le message de news:ca4gsl$huo$
J'essaye de convertir un programme C++ de Windows à Linux. Or je tombe sur la fonction de pause : Sleep(50);
Je souhaite la remplacer par une fonction équivalente et mon livre de C indique la fonction sleep() mais pas la librairie dans laquelle elle serait contenue.
Ce qui suit est une fonction de pause qui fonction sous Windows et les variantes d'Unix:
#ifndef _WIN32 # include <unistd.h> #else # include <windows.h> #endif
#include <iostream> #include <assert.h>
//Suspend execution of the calling process for ms milliseconds. void wait_for (int ms) { assert (ms >= 0);//positive_argument #ifndef _WIN32
usleep (ms * 1000); // *1000 pour convertir en microsecondes
#else Sleep (ms); #endif }
usleep comme son nom l'indique prend en paramètre un nombre de microsecondes, pas millisecondes. Il me semble aussi que, au moins sur solaris, ce paramètre ne pas être >= 1 000 000. Regarde plutôt du coté de nanosleep qui ne souffre pas de ces limitations et fait partie de la norme POSIX.
Bertrand.
Alexandre
question peut etre bete(je n'ai peut etre pas compris la question), mais pourquoi ne pourrait on pas gerer un temps precis en C++?
parce que ça dépend de la plate-forme.
Twxs
question peut etre bete(je n'ai peut etre pas compris la question), mais
pourquoi ne pourrait on pas gerer un temps precis en C++?