Zu der Make-Problematik:
Entweder Du lernst selbst, autoconf und automake zu verwenden, oder aber Du greifst zu einer bequemeren Alternative wie scons.
linu(x)bie schrieb:
hmm moment mal. Ich hab das besagte Buch von R.Stevans. Der Zweite Autor:Stephen A. Rago sagt mir gar nichts. Was hat den der neues dazu eingebracht?
Der hat die 2nd Edition geschrieben. So wie Stevens das mit UNP gemacht hat. Also POSIX beachtet, neue Themen reingebracht etc
Stevens hätte das wohl selbst gemacht, wenn er nicht leider schon tot wäre
http://books.slashdot.org/article.pl?sid=05/07/09/2258248&tid=156&tid=130&tid=6
Hallo!
Frage zur Systemprogrammierung: Mit welcher Funktion lässt sich die Anzahl der Pixel (x, y) eines geöffneten Konsolenfensters ermitteln? Ich meine damit nicht die Anzahl der Pixel des gesamten Bildschirms, nur die des Fensters.
Gruß
Michael
Mit read() und write() erfolgt grundsätzlich ein ungepufferter Zugriff auf die Devices! Du musst allerdings die "Vorverarbeitung" der Daten über tcsetattr() abschalten.
Die UARTS (I/O-Baustein am COM-Port) besitzen jedoch intern (Hardware) einen FIFO von max. 16 Bytes Tiefe - der hängt bei der Datenübertragung natürlich immer dazwischen.
Martin
kingruedi schrieb:
Benutz einfach so etwas wie libevent oder enot. Die kümmern sich um die platform spezifischen hacks.
Das klingt schon gut.
Danke
Falls ich mal vor hab, mehr als 1024 Clients zu versorgen, werd ich drauf zurück kommen
Falls irgendwann mal wer mit der Suchfunktion auf diesen Tread stößt...
Aufgrund doch recht großer Ungenauigkeiten der Lösung mit getitimer/setitimer, musste ich nach einer anderen Lösung suchen.
Ich habe das ganze nun so gelößt:
timeval m_timeLast, m_timeCur;
double m_dTimeElapsed;
// Initzialisierung fuer Synchronisation
gettimeofday(&m_timeCur, 0);
m_timeLast = m_timeCur;
// dann jedes Frame
gettimeofday( &m_timeCur, 0 );
m_dTimeElapsed = (double)(m_timeCur.tv_sec - m_timeLast.tv_sec) + ((double)(m_timeCur.tv_usec - m_timeLast.tv_usec)) / 1000000.0;
m_timeLast = m_timeCur;
Marcin hatte mir die Funktion schon direkt am Anfang genannt, jedoch wusste ich nicht, dass sie auch Microsekunden zurückgibt.
thx @ all
Coolcat
hmm, die einzige lösung die mir pauschal einfällt ist ein skript zu schreiben das die rechte in dem verzeichnis anpasst und minütlich oder stündlich ausgeführt wird.
switch/case kannst du nicht mehr benutzen, da du damit keine Byte-Sequenzen vergleichen kannst.
Du kannst den Code wie folgt schreiben:
#include <stdio.h>
#include <string.h>
enum { SIZE=100 };
int main() {
char in[SIZE];
fgets(in, SIZE, stdin);
char *ptr=in;
while(*ptr) {
if(!memcmp(ptr, "ä", sizeof("ä")-1)) {
fputs("ä", stdout);
ptr+=sizeof("ä")-1;
}
else if(!memcmp(ptr, "Ä", sizeof("Ä")-1)) {
fputs("Ä", stdout);
ptr+=sizeof("Ä")-1;
}
//...
else {
putchar(*ptr);
++ptr;
}
}
return 0;
}
Aber im Endeffekt hat UTF-8 ja den Vorteil, dass du diese ganzen HTML-Encodings gar nicht brauchst. Es reicht, wenn du das Encoding richtig in der Datei angibst (DOCTYPE-Tag und bei xhtml auch im xml-Tag).
Herr-Vorragend schrieb:
............... schrieb:
ich kann selbst kein Kernelupdate durchführen, weil es sich um einen vServer handelt und ich deshalb die nötigen Rechte nicht habe.
dann gar nicht.
öh? geht es anders gar nicht? dass ich mir einfach die dateien irgendwo besorg?
Du kannst dir vielleicht die Header/Lib Dateien holen, aber ausführen kannst du das Programm dann nicht auf dem Betriebssystem.
Dank "ankon" hab ich eine vernünftige Lösung gefunden, nochmal Danke.
(1) http://freshmeat.net/projects/chrpath/
(2) Die bessere Lösung man linkt die Applikation so: ld -z now -z origin -rpath 'ORIGIN/.'; bzw. in über GCC: -Wl,-z,origin -Wl,-rpath,\\ORIGIN/. -Wl,-z,now. Dieses Verhalten kommt dem was ich ereichen wollte am nächsten.
Ebenfalls kann ich die Option --enable-new-dtags und --sort-common sehr empfehlen, das hat gut schwung in das Starten der Anwendung gebracht.
Grüße,
Christoph
Hallo,
ich bin´s noch einmal:
wenn ich FZERO ... und FD_SET ... in die Schleife setze
funktioniert es.
hiermit wird doch nur die Gruppe der zu beobachteten Desrcriptoren definiert,
Warum muss das vor jedem select geschehen?
Danke für die Hilfe
Ulli
fd_set rfds;
struct timeval tv;
while(1){
FD_ZERO(&rfds);
FD_SET(socket_settings, &rfds);
int retval;
ssize_t bytes;
char udp_message[512];
/***************** select auf UDP-Socket********************/
/* Watch stdin (fd 0) to see when it has input. */
/* Wait up to five seconds. */
tv.tv_sec = 5;
tv.tv_usec = 0;
retval = select(socket_settings +1, &rfds, NULL, NULL, &tv);
if (retval){
bytes = recv( socket_settings, udp_message, 512, 0 );
if (bytes ==-1)
printf("Fehler im UDP-Telegramm\n");
udp_message[bytes] = '\0';
printf("%d Zeichen: %s\n", bytes, udp_message);
}else
printf("-> keine Daten in 5 Sekunden von Port %d empfangen!\n", PORT_SETTING);
}
SuSE haben eine dämliche Politik und installieren die Compiler nicht mit, obwohl dies absolut unüblich ist für ein Linux oder Unix System. Hat aber glaube ich etwas mit der 1std Installation oder so zu tun. Einfach mal in YaST die Paketsuche benutzen.
malabarista schrieb:
OK:
ich habe es mit
DisplayWidth/ DisplayHeight gelöst.
Danke!
ups, stimmt, getRootWidth & co. sind meine eigene warppers, ich hab das vergessen.