Hallo,
zu 1.: der ist schon im Buffer, auf die gleiche Weise wurde auch die "Verbindung" von ip_header mit dem Buffer hergestellt
zu 2.: es gibt zwei "Arten" der Struktur, die sich im wesentlichen nur in der Namensgebung unterscheiden, welche genommen wird, wird über ein #define gesteuert, siehe z.B. hier:
http://en.wikipedia.org/wiki/Tcphdr
MfG,
Probe-Nutzer
Anon schrieb:
Beim Kompilieren habe ich nur -o rangehängt, sonst nichts.
Damit Du debuggen kannst, musst Du aber noch -g3 oä. dranhängen.
Sind diese Forntends dann so wie beispielsweise der Debugger von Eclipse, sodass ich also nur in die Zeile klicken muss und so breakpoints setze?
Ja.
Verwendest Du schon eine IDE? Hat die ein gdb-Frontend? Wenn nicht, sind vmtl. kdbg und Konsorten schon einigermaßen brauchbar.
Du brauchst jetzt kein emacs, das war nur die erste Seite die ich angeklickt hab, die im Google-Kurztext vielversprechend aussah.
Sag doch einfach, was du machen willst! Wenn du eine pattern suchst, die "foo(" enthält, geht das ganz einfach so:
grep "foo(" *
Willst du die Zeile + file mitbekommen:
grep -nH "foo(" *
z.B.:
$ grep -nH "while (" *
ada-exp.c:353:# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
ada-exp.c:399: while (0)
ada-exp.c:417: while (0)
ada-exp.c:975:while (0)
ada-exp.c:1011:} while (0)
ada-exp.c:1017:} while (0)
ada-exp.c:1028:} while (0)
ada-exp.c:1055:} while (0)
ada-exp.c:1085:} while (0)
ada-exp.c:1138: while (*yys++ != '\0')
ada-exp.c:1164: while ((*yyd++ = *yys++) != '\0')
ada-exp.c:2601: while (*renaming_expr == 'X')
ada-exp.c:2829: while (*sels != '\0')
[usw... gdb macht das scheinbar oft ;)]
Also Problem genauer beschreiben, bitte, danke
Hi,
auch wenn das Posting schon älter ist ...
Dein Ansatz via RS-232 TX geht nicht. In der Praxis benutzt man die Steuerleitungen RTS, CTS usw. zum Senden und Empfangen von Pegeln. Es gibt Programme, die emulieren einen ganzen I2C Bus via Steuerleitungen. Man benutzt dazu Timer, die nach Ablauf die Leitungen setzen. Das Problem dabei ist, das Linux ein Multi-Tasking System ist. Die Timer haben also nur eine begrenzte Genauigkeit.
In der Praxis nimmt man fuer so etwas zB einen kleinen Micro-Controller (AVR, PIC ...), der dann zB via RS-232 Befehle für die Pulslängen bekommt und relativ genau an einem PIN ausgibt.
USB geht dafür überhaupt nicht.
Schon gut, grad selbst gelöst. Für die es interessiert:
/proc/[pid]/fd - hier sind die links. Für neugierige readlink [zahl], so erfährt man, welche Dateien ein Prozess geöffnet hat. :-).
Ob lsof es auf diese Weise macht weiss ich jedoch (noch) nicht.
Danke fuer die schnelle Antwort. Nun stosse ich aber noch auf folgenden Fehler:
(meine c-datei lautet myconvert.c)
(der gcc Aufruf lautet gcc -lspandsp g722.c myConvert.c -o myconvert)
In file included from myConvert.c:24:
g722.h: In function ‘SPAN_DECLARE’:
g722.h:80: error: expected declaration specifiers before ‘g722_encode_init’
g722.h:85: error: expected declaration specifiers before ‘SPAN_DECLARE’
g722.h:90: error: expected declaration specifiers before ‘SPAN_DECLARE’
g722.h:98: error: expected declaration specifiers before ‘SPAN_DECLARE’
g722.h:106: error: expected declaration specifiers before ‘SPAN_DECLARE’
g722.h:111: error: expected declaration specifiers before ‘SPAN_DECLARE’
g722.h:116: error: expected declaration specifiers before ‘SPAN_DECLARE’
g722.h:124: error: expected declaration specifiers before ‘SPAN_DECLARE’
myConvert.c:30: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
myConvert.c:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
g722.h:80: error: parameter name omitted
myConvert.c:80: error: expected ‘{’ at end of input
In file included from g722.c:49:
floating_fudge.h: In function ‘sinf’:
floating_fudge.h:42: warning: incompatible implicit declaration of built-in function ‘sin’
floating_fudge.h: In function ‘cosf’:
floating_fudge.h:49: warning: incompatible implicit declaration of built-in function ‘cos’
floating_fudge.h: In function ‘tanf’:
floating_fudge.h:56: warning: incompatible implicit declaration of built-in function ‘tan’
floating_fudge.h: In function ‘asinf’:
floating_fudge.h:63: warning: incompatible implicit declaration of built-in function ‘asin’
floating_fudge.h: In function ‘acosf’:
floating_fudge.h:70: warning: incompatible implicit declaration of built-in function ‘acos’
floating_fudge.h: In function ‘atanf’:
floating_fudge.h:77: warning: incompatible implicit declaration of built-in function ‘atan’
floating_fudge.h: In function ‘atan2f’:
floating_fudge.h:85: warning: incompatible implicit declaration of built-in function ‘atan2’
floating_fudge.h: In function ‘ceilf’:
floating_fudge.h:93: warning: incompatible implicit declaration of built-in function ‘ceil’
floating_fudge.h: In function ‘floorf’:
floating_fudge.h:100: warning: incompatible implicit declaration of built-in function ‘floor’
floating_fudge.h: In function ‘powf’:
floating_fudge.h:108: warning: incompatible implicit declaration of built-in function ‘pow’
floating_fudge.h: In function ‘log10f’:
floating_fudge.h:129: warning: incompatible implicit declaration of built-in function ‘log10’
In file included from g722.c:53:
spandsp/saturated.h: In function ‘fsaturatef’:
spandsp/saturated.h:78: warning: incompatible implicit declaration of built-in function ‘lrintf’
spandsp/saturated.h: In function ‘fsaturate’:
spandsp/saturated.h:88: warning: incompatible implicit declaration of built-in function ‘lrint’
der entsprechende Code aus der g722.h lautet:
/*!
G.722 encode state
*/
typedef struct g722_encode_state_s g722_encode_state_t;
/*!
G.722 decode state
*/
typedef struct g722_decode_state_s g722_decode_state_t;
#if defined(__cplusplus)
extern "C"
{
#endif
/*! Initialise an G.722 encode context.
\param s The G.722 encode context.
\param rate The required bit rate for the G.722 data.
The valid rates are 64000, 56000 and 48000.
\param options
\return A pointer to the G.722 encode context, or NULL for error. */
SPAN_DECLARE(g722_encode_state_t *) g722_encode_init(g722_encode_state_t *s, int rate, int options);//<- das ist Zeile 80
greetz myname
mit man: vfork/man: execl sollte das einfach sein
grob sollte das ungefähr so aussehen:
pid_t pid = vfork();
if(pid < 0) {
perror("vfork");
}
else if(pid == 0) {
if(execl("prog", "prog", 0x0) == -1) {
perror("execl");
_exit(1);
}
_exit(0);
}
sleep(10); // ...
kill(pid, SIGTERM);
sleep(1);
if(waitpid(pid, 0x0, WNOHANG) != pid) {
kill(pid, SIGKILL);
}
wenn du eine pipe willst, musst du die mit man: pipe(2) da noch einbauen.
X11 hat keine Widgets. Sprich: Es gibt nicht einfach eine Button-Klasse, die du nur irgend wo platzieren musst und die dann alles macht. Das musst du dir alles selbst basteln. Das zeichnen, das Eventhandeln etc. Dann noch die zahlreichen X11-Komponenten unterstützen und Legacy-Probleme lösen etc.
schau dir einfach den Quellcode von GTK+ an.
Hallo,
ich suche eine Funktion die der Visual C++ _mktime64 unter Win entspricht nur für Linux gcc.
_mktime64 entspricht der mktime aus dem std time.h Header.
Nur das _mktime64 als übergabgewerte vom typ long long entgegen nimmt um das Jahr 2039 Problem zu lösen. Was für mein Programm unerlässlich ist, da ich mit Zeitstempeln um das Jahr 2070 Arbeiten muss.
Es muss übrigends eine Lösung für ein 32bit OS sein wie _mktime64 ja auch ist.
Beispiel:
__time64 = _mktime64(struct tm *timeptr );
Schon mal danke fürs drüber nachdenken.
Die Fehlermeldung ist hier nicht sehr anfängerfreundlich, musste da auch etwas nachdenken. Tu mal folgendes dazu:
#include <sys/wait.h>
(Ach ja, und statt <stdlib.h> gibt es auch <cstdlib>.)
öhm Qt ist mittlerweile auch unter LGPL erhältlich. Da sind deine Infos veraltet
Und Qt verwendet doch namespaces (zu mindestens in Qt 4.x) oder was meinst du?
Ja dan is das was anderes
@Wikinger: bist du ein Troll oder nur ideologisch verblendet? Du nennst QT veraltet, aber du willst unbedingt mit X11 nativ arbeiten? Wenn du dir selber einen Klotz am Beim hängen willst, dann viel Spaß.
Hmm neja ich nannte Qt in richtung C++ veraltet, jedoch ist X11 noch in C gehalten . Der Klotz ist nur dazu da um es zu lernen und nicht um es alternativ zu verwenden einfach aus dem grund weil es komplex und umständlich ist.
@Wikinger75: WinAPI, X11 und Cocoa? Was willst Du denn machen? Wenn Du irgendwas portables schreiben möchtest, dann nimm doch einfach QT oder GTK+ oä. Nebenbei bemerkt schreibt auch unter GNU/Linux kein Schwein mehr X11-Anwendungen, da nimmt man auch QT oder GTK oder wxwidgets oder …
Ja ich werde ja auch GTKmm, FLTK oder Qt nutzen, jedoch interesiert mich das Low Level einfach.
Dafür verwendet X11 aber keine namespaces ;). Wer einfach portable GUIs bauen will, sollte Qt nehmen. Zwar ist die API nicht das hübscheste. Aber im Vergleich zu X11 oder WinAPI ist sie ein Traum.
Außerdem ist X11 zwar Lowlevel. Aber wie bereits mehrfach gesagt, keine native OSX API! Aber er soll ruhig damit rumspielen. Er wird wohl früh genug selbst drauf kommen, dass man kein eigenen X11 Code schreiben will.
Naja X11 ist ja auch C und wie gesagt ich würde dan auch ein GUI Kit nehmen, aber wie gesagt interesiert mich das Low Level.
Mfg Wikinger75!
Wen's interessiert: meine 3d engine ist ab heute dem 19. Oktober 2009 Platform unabhängig und offiziell im Internet herunterzuladen
Ich habe sogar einige Tutorials auch für Linux vorkompiliert - muss man allerdings in der Konsole aufrufen, jedenfalls bei mir (vermutlich stimmt sonst das WorkingDirectory nicht oder so?!).
http://softpixelengine.sourceforge.net/sp_downloads.html
Eigentlich wäre es direkt mal sinnvoll, eine Cronjob-FAQ zu schreiben. Ich hatte zwar nicht daran gedacht, dass das Problem sein könnte, aber rückblickend betrachtet ist das ja durchaus einer der Klassiker.
Dazu ein paar Verbesserungsvorschläge/Anmerkungen:
hando schrieb:
1.) Installation der coreutils (für das whoami )
Hu? Wie hast Du es denn geschafft, Ubuntu ohne coreutils zu installieren?
2.) Anlegen des Verzeichnis' /usr/ucb
3.) Symbolischen Link /usr/ucb/whoami auf /usr/bin/whoami
Klingt eher so, als solltest Du /usr/bin in Deinen $PATH hinzufügen.
4.) in der ~/.cshrc Abfrage ob $HOST definiert, wenn nicht: z.B. /etc/hostname auslesen und entsprechend $HOST setzen
Lieber man: hostname(1) verwenden, das ist portabler.