Ah, darauf bin ich nicht gekommen
So ganz versteh ich das select() zwar noch nicht, aber wenn ich den Beispielcode aus der manpage 1:1 umsetze scheint es zu funktionieren.
Danke für den Tip!!
Gruß
Thorsten
Alternativ beim Compilieren _LARGEFILE_SOURCE und _FILE_OFFSET_BITS=64 setzen, dann haben alle POSIX- und C-I/O-Funktionen ohne Änderungen am Quellcode 64bittige Offsets.
Hi!
Danke für eure Antworten.
Hab den Fehler gefunden.
res = pthread_create(&tid[i], NULL, print_thread(), NULL);
wird zu
res = pthread_create(&tid[i], NULL, print_thread, NULL);
Die Fuktionsklammer waren im Weg.
Werd aber eure Vorschläge auch mal ausprobieren.
Vorallem die dynamische Speichergenerierung ist für diesen Fall sicher die bessere Wahl.
Danke nochmal
Christian
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Ich sehe jetzt nicht direkt einen Fehler. Wenn ISSET immer true ist, blockiert recvfrom dann oder liest es weiterhin Daten? Wenn ja, dürfte das Problem ja eher woanders liegen. (Versuch mal einen minimalen aber vollständigen Code zu schreiben, der den Fehler demonstriert. Das würde zumindest weiter helfen den Fehler zu analysieren)
Ansonsten bin ich mir nicht sicher ob dein gecaste mit den strict-aliasing Regeln des C99-Standards kompatibel ist.
btw. solltest du für count einen unsigned-Typ (am besten eben size_t, aber das hängt von der Größe von ip->ihl ab). Wenn ip->ihl größer als std::numeric_limits<int>::max()*8/32 ist, dann hast du nämlich eine Endlosschleife! (also ein potentieller DOS-Angriff). Für sum würde ich vermutlich auch einen unsigned Typ nehmen. (ok. das war jetzt alles Werbung für einen Artikel über Integer den ich gerade schreibe :D)
fopen() und open() unterscheiden sich dadurch, dass das eine gepufferten und das andere ungepufferten Dateizugriff einleitet. Beides ist meines Wissens im POSIX-Standard enthalten.
Hinter dem Stream (FILE bei fopen() liegt auch immer ein open()-kompatibler Datei-Handle, siehe auch diesen Beitrag.
Also, ich hab hier ein Projekt das folgendermaßen aussieht
/: Projekt-Root enthält Makefile
/BasicFightSimulator: enthält Code-Dateien (.cpp, .hpp, .h)
/Linux: darein sollen die Objekt-Dateien und das fertige Programm
Mein Makefile sieht jetzt so aus:
# Makefile for the basic fight simulator on Linux
# created by Xenesis
BUILD_DIR = ./Linux #in which directorie should i put the *.o and *.exe files
SRC_DIR = ./BasicFightSimulator #where are the source files?
BIN = $(BUILD_DIR)/basicfightsimulator.exe
OBJ = $(BUILD_DIR)/%.o
#compiler flags
#CXXFLAGS +=
.PHONY: build clean rebuild
build: $(BIN)
clean:
${RM} $(OBJ) $(BIN)
rebuild: clean build
$(BIN): $(OBJ)
$(CXX) $(OBJ) -o $(BIN)
$(OBJ): $(SRC_DIR)/%.h $(SRC_DIR)/%.hpp $(SRC_DIR)/%.cpp
$(CXX) -c $(SRC_DIR)/%.cpp -o $(BUILD_DIR)/%.o $(CXXFLAGS)
Leider funktioniert das nicht.
Ich bekomme da die etwas seltsame Meldung:
Makefile 24: Warnung: Die Befehle für das Ziel Linux werden überschrieben
Makefile 21: Warnung: Alte Befehle für das Ziel Linux werden ignoriert
make: Keine Regel vorhanden um das Target /%.h benötigt von Linux zu erstellen. Schluss.
okey, nächstes Problem.
Ich habe jetzt Speicher per __get_free_pages angefragt und bekomme die Startadresse zurückgeliefert.
Wie kann ich auf den Speicher zugreifen (ein- und auslesen)?
Hi, ich möchte unter Linux einen Upnp Reconnecter für meinen Router schreiben, weiss jemand wie ich so etwas realsieren kann ??, mit sockets ist mir klar
hi leute, also folgendes einfaches problem. wenn ich im gdb einen quellcode checken will, zeigt er mir die lokalen variablen innerhalb von methoden, die einer klasse gehöhren, nicht an. ich compiliere meinen text ganz normal,
g++ datei.cpp
g++ -g datei.cpp
und schau mir dann das zeug in ddd oder kdbg an.
weis jemand wie ich die variablen sichtbar mache?
thx
Beachte das Windows eine andere Unicode-Implementierung nutzt, als die unter Unix üblichen. Unter Linux/Unix ist zB UTF-8 weit verbreitet und wchar_t entspricht UCS-4, während es unter Windows dem veralteten UCS-2 entspricht!
Was soll mit MBCS sein?
Ansonsten würde ich die auch einen Blick in die glibc-Doku empfehlen.
ok jetzt hab ich nur noch das Problem der falschen Mac-Adresse:
--> tun0 --> eth0 --> auf Host 192.168.1.103
umschreiben zu: kommt also Source IP:
s: 172.16.0.1 s: 192.168.1.3 192.168.1.1 (der default GW)
d: 172.16.0.20 d: 192.168.1.103
Die Pakete die eth0 verlassen haben als Source noch 192.168.1.3
allerdings wird automatisch in Layer2 alles an den Router geschickt
der also default Gateway eingetragen ist, nehme ich den Routingeintrag raus
funktioniert nichts mehr!?
[quote="t07"]- ich hatte eclipse
Wegen des Plusquamperfekts versteh ich darunter "vor der Installation von autoconf/automake"
t07 schrieb:
bevor ich es dann über die synaptic paketverwaltung installiert habe als tar.bz2 oder so vorliegen. entpacken ging problemlos. anschließend hab ich wie in der install beschrieben ins verzeichnis navigiert und ./configure eingeben wo schon ein fehler kam. make ging dann auch nicht. wisst ihr warum?
ansonsten danke mal!
Dann lag's nämlich auch daran; configure braucht afaik M4 Makro-Expansion; das leisten die autotools.
(afaik deshalb weil ich hier kein Linux habe)
make "ging" (bitte Fehler genauer beschreiben) dann wohl nicht weil kein Makefile erzeugt worden war.
Grüsse
*this
Hi Leute,
funktioniert wunderbar, hab das mit dem Copy-Paste auch bemerkt, als ich es genau aufgeschrieben habe, und es null und nichtig funktioniert hat, habe ich mit Copy-Paste Erfolg gehabt
Solangsam komme ich auch hinter die Syntax... ein wenig gewöhnungsbedürftig, aber logisch.
Muss aber gestehen ... richtig 100%tig habe ich es noch nicht verinnerlicht ...aber mal schaun!
Danke Euch für Eure Hilfe!!!
Schönes WE!
Gruss Alex