Ich habe versucht, kv_t zu verwenden, um einige Daten ohne Erfolg zu speichern. Ich habe auch versucht, die Beispiele forum.c & kv.c. forum.c hängt beim Versuch, den zweiten Forum-Thread zu erstellen, während kv.c abstürzt.s.kv_do Infine-Schleife, wenn kv mehr als 1 Element hat
Wenn ich 1 Element zum KV hinzugefügt habe, wird kv_do erfolgreich sein. Nach dem Hinzufügen des zweiten Elements führt der Versuch, kv_do aufzurufen, zu einer Endlosschleife, und die Daten scheinen auch nicht gültig zu sein.
#include "stdio.h"
int list_threads(kv_item *item, xbuf_t *reply)
{
Thread *thread = (Thread*)item->val;
xbuf_t thread_li;
xbuf_init(&thread_li);
//using sprintf-like formatting
xbuf_xcat(&thread_li,
"<li>"
"<a href='/?forum_simple/act=t/id=%llu'>%s</a> (%lu)"
"</li>",
thread->id, thread->title.ptr, thread->posts.nbr_items
);
char *pos = (char*)xbuf_findstr(reply, "<!--tpl-->");
if (pos) xbuf_insert(reply, pos, thread_li.len, thread_li.ptr);
printf("-----------listing threads------\n");
xbuf_free(&thread_li);
return 1;
}
Der obige Code stammt von forum.c. versuchen nach dem Erstellen des ersten Forum Thread, versuchen, die zweite zu erstellen, wird hängen, weil die Funktion list_threads, wenn unendlich aufgerufen wird. die --------- Auflistung der Threads ----------- wird auf dem Terminal unendlich gedruckt
Wurde dieses Problem bereits behoben @Gil? – Nagi
Nicht in naher Zukunft: Programme unter Linux wurden noch mehr zu einer Hürde als auf Microsoft Windows. Zu dieser Zeit können wir es uns einfach nicht leisten, mit diesen ständigen unnötigen Inkompatibilitäten fertig zu werden. – Gil
Könnten Sie in diesem Fall Ihre Arbeitsumgebung teilen, die garantiert, dass kv_do funktioniert? (Kernel-Version, kann auch gcc-Version sein?) – Nagi