• 28.04.2024, 05:02
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

kann wer von euch C++ ?

Donnerstag, 18. April 2002, 22:45

brauch nen befehl mit man den ablauf eines programms anhalten kann so um eine sek.
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

Re: kann wer von euch C++ ?

Donnerstag, 18. April 2002, 22:49

usleep(199000); /* 199 ms Delay */

oder

sleep(1)
das ist dann aber glaube in sekunden (ich benutze aber immer usleep)

Re: kann wer von euch C++ ?

Donnerstag, 18. April 2002, 22:52

welche #include datei brauch ich dafür ? weil so geht nicht...
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 02:07

Zitat von »Sneaker«

welche #include datei brauch ich dafür ? weil so geht nicht...

ich weiß es nicht genau. ich kann eigentlich kein C, ich kann einfachen code verstehen und editieren
folgendes wird in "meinem" code included:
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/cdrom.h>
#include <signal.h>

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 03:23

Wenn Du M$ Visual Studio hast schmeiss doch die Hilfe an, bei dem Befehl müsste (wenn ich mich richtig erinnere) immer die header-Datei dabeistehen wenns ne Standard-Funktion ist...

hus

Senior Member

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 12:24

unsigned int sleep(unsigned int seconds);

void usleep(unsigned long usec);
int usleep(unsigned long usec); /* SUSv2 */

Zu finden in <unistd.h>

Achtung: usleep() zählt zwar in Mikrosekunden, da aber ein yield implizit ist, funktioniert das nur in Scheduling-Intervallen; unter Linux/Intel z.B. 10ms, unter Linux/Alpha 977µs.
Das gleiche gilt auch für poll() bzw. select().

Für feinkörnigere Kontrolle hilt nur ein busy wait und Abfrage von gettimeofday().
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 12:30

auf Solaris:

Zitat

>man usleep
Reformatting page. Please Wait... done

Standard C Library Functions usleep(3C)

NAME
usleep - suspend execution for interval in microseconds

SYNOPSIS
#include <unistd.h>

int usleep(useconds_t useconds);

DESCRIPTION
The usleep() function suspends the current process from exe-
cution for the number of microseconds specified by the
useconds argument. (A microsecond is .000001 seconds.)
[...]

HTH

<edit>
Ooops, zu lahm :-[ :D
</edit>

moede

Senior Member

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 15:56

du nimmst die zeit <time.h>

legst einen Startwert fest und lässt die Schleife so lange laufen bis die Zeit eine Sekunde später ist.

peace
moede

edit
habe gerade gemerkt das sleep, genau das macht, nur das du es nicht selber schreibst.

hus

Senior Member

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 16:44

Nein, sleep() gibt den Prozessor frei, so daß andere Prozesse rechnen können. Eine Warteschleife dagegen verbrät die ganze Zeit Rechenleistung.
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 18:09

werde ich mal ausprobieren ... das mein ich ja auch ich will ja keine rechenleitung verbrauchen das ding soll einfach zur anhalten
zur hilfe... die hab ich leider nicht installiert... und die CD war ja nur ne sicherheitskopie ;)


edit: argh hab die include datei nicht kann mir die mal wer über ICQ schicken ?
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

hus

Senior Member

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 18:19

Die Include-Datei ist nicht notwendig. In der Standard-Bibliothek ist die Funktion auf jeden Fall enthalten. Je nach Compiler und Einstellungen ist eine Deklaration nicht notwendig.
Falls der Compiler wirklich nicht mitspielt, einfach einen der Prototypen aus diesem Thread in die entsprechende Datei aufnehmen.
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 19:26

nope ... der compiler spielt da nicht mit ... der will die include datei, weil usleep kennt er nicht... hab übrigens MS Visual C++
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

hus

Senior Member

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 19:32

Füge die Zeile "void usleep(unsigned long usec);" in Deinen Quelltext ein vor der Verwendung dieser Funktion. Mehr will der Compiler nicht.
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"

Re: kann wer von euch C++ ?

Freitag, 19. April 2002, 20:42

nun bekomm ich diesen fehler:
craps.obj : error LNK2001: unresolved external symbol "void __cdecl usleep(unsigned long)" (?usleep@@YAXK@Z)
Debug/craps.exe : fatal error LNK1120: 1 unresolved externals

und das hab ich im quellcode: usleep(199000);

achja noch was... compilieren kann ich das ding ganz gut aber beim linken gibs dann die probleme...
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

hus

Senior Member

Re: kann wer von euch C++ ?

Samstag, 20. April 2002, 12:22

grrr... dann stimmt der Prototyp nicht genau. Es könnte helfen, die Deklaration in
extern "C" { ... }
einzufassen, oder den Rückgabewert auf 'int' zu setzen.

Oder hat vielleicht die Entwicklungsumgebung ein Werkzeug, um die Symbole aus der Bibliothek zu extrahieren? Mit den GNU Tools würde ich einfach die richtige Deklaration extrahieren :P
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"

Re: kann wer von euch C++ ?

Montag, 22. April 2002, 01:34

arg, falscher topic... hier hab ich wirklich nichts zu suchen ;D
kenn mich mit dem zeugs überhauppt nicht aus!!

Gruß, Buz
HONDA = Höllischer Orgasmus Nach Dem Anlassen

Re: kann wer von euch C++ ?

Montag, 22. April 2002, 17:45

wie ?
ich lern C++ gerade in der schule ... so ca. seid einem halben jahr also nochmal ein bisschen langsamer und nochmal auf normal deutsch ;)
naja ich versuch aber mal mit den GNU tools vielleicht find ich da ja was... nochwas wo finde ich die ?
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

hus

Senior Member

Re: kann wer von euch C++ ?

Dienstag, 23. April 2002, 13:25

Die Tools enthält jede gute Linux-Distribution ;D

Versuch's mal mit:
extern "C" {
void usleep(unsigned long usec);
}
oder mit:
extern "C" {
int usleep(unsigned long usec);
}
Das hilft in dem Fall, daß die Funktion usleep() aus der C-Bibliothek stammt und nicht aus der C++-Bibliothek. In C++ wird (wegen der Polymorphität) jeder Funktionsname um Kennzeichnungen für Parameter und Rückgabetyp erweitert. Das ergibt dann das Symbol, das Dein Linker nicht finden konnte. 'extern "C"' weist den Compiler an, Symbole gemäß der C-Konvention zu erzeugen, so daß das Objekt gegen eine C-Bibliothek gebunden werden kann.

Falls das nicht hilft, mußt Du den genauen Prototypen der Funktion finden. Am einfachsten geht das natürlich über das entsprechende Header-File. Wenn das nicht aufzutreiben ist, kannst Du über alle vorhandenen System-Header eine Volltext-Suche nach "usleep" laufen lassen, in der Hoffnung, einen Hinweis zu finden auf die richtige Deklaration oder auf einen anderen Header, der selbige enthält.

Die letzte Möglichkeit wäre, die in der Bibliothek enthaltenen Symbole aufzulisten; diese Liste müßte eine C++-konform erweiterte Variante von "usleep" enthalten. Dazu verwende ich unter Unix die GNU-Tools; keine Ahnung, ob M$ etwas entsprechendes liefert.
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"

Re: kann wer von euch C++ ?

Mittwoch, 24. April 2002, 16:33

also ich benutz WinME
aslo hab ich keine GNU Tools
ich habs mit void und mit int ausprobiert... funzt beides nicht und das header file für ussleep ist glaube ich beschädigt weil da variablen fehlen oder so und anderen header files finde ich nicht...
Never touch a running system Besucht mal unsere Klassenhompage: www.thedqi.net

hus

Senior Member

Re: kann wer von euch C++ ?

Mittwoch, 24. April 2002, 19:44

Dann mußt Du wohl doch das original Header-File auftreiben. In dem Fall wäre es aber auch angebracht, den Compiler komplett neu zu installieren, da es sich durchaus um zentrale Dateien handelt.

Andererseits besteht auch die Möglichkeit, daß dieser C-Dialekt kein usleep() enthält. Es gibt Systeme, die haben
int nanosleep(const struct timespec *req, struct timespec *rem);
in <time.h>. nanosleep ist POSIX-Standard und sollte somit vorhanden sein. Aus der man-page:

[tt]
nanosleep delays the execution of the program for at least
the time specified in *req. The function can return ear­
lier if a signal has been delivered to the process. In
this case, it returns -1, sets errno to EINTR, and writes
the remaining time into the structure pointed to by rem
unless rem is NULL. The value of *rem can then be used to
call nanosleep again and complete the specified pause.

The structure timespec is used to specify intervals of
time with nanosecond precision. It is specified in
<time.h> and has the form

struct timespec
{
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};

The value of the nanoseconds field must be in the range 0
to 999 999 999.
[/tt]
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"