Ich versuche einen Systemaufruf zu machen, der die Inode-Nummer einer Datei zurückgibt, und wählte die FTS
und FTSENT
Strukturen, da ich sie während der Suche gefunden habe und sie auch in verwendet werden ls.c
(von dem üblichen ls
Programm, das mit -i gibt uns die Inode-Nummern).Minix: undefinierte Distanz zu __fts_open60
Um Dinge dicht gepackt zu halten, fügte ich die beiden Funktionen in der Unterseite table.c
in hinzu.
Dies ist der Fehler (der Vollständigkeit halber):
table.o: In function 'do_inode_nr':
table.c:(.text+0x1f): undefined reference to __fts_open60
table.c:(.text+0x50): undefined reference to __fts_read60
clang: error: linker command failed with code 1 (use -v for invocation)
ich nicht -v verwenden kann, weil ich mit make hdboot
aus /usr/src/releasetools
Gebäude bin.
Der Code:
//forward declaration of the functions before the table itself
//table and default stuff
//after all this
#include "fts.h"
int do_inode_nr()
{
FTS* s = fts_open(&m_in.m1_p1, 0, NULL);
printf("%s", s? "got inode\n" : "failed to get inode\n");
if(s == NULL) return -1;
FTSENT* p = fts_read(s);
printf("%d", p->fts_ino);
return p->fts_ino;
}
weitere Hinweise:
Q: Ist das ein Projekt? Willst du uns dazu bringen, deine Hausaufgaben zu machen? A: Ja, es ist ein Projekt für eine Klasse, aber offensichtlich habe ich bereits eine Antwort gefunden, mit der ich zufrieden bin und um Hilfe bzgl. Des Linkerfehlers bittet, ich bitte nicht um eine Lösung, beleidige mich nicht, dass ich das behaupte bin zu faul, um es zu lösen (nur für den Fall :))
Q: Warum in table.c
? A: Wir müssen einen Patch mit Git machen, aber es ist bekannt, dass es etwas schwer ist, neue Dateien zu dem Patch hinzuzufügen, also bleibe ich bei table.c, das sowieso im Patch enthalten ist - was ich bin Sprichwort ist, ich weiß, dass ich generell neuen Code in separate Dateien schreiben sollte, aber angesichts der Tatsache, dass ich nicht viel mehr tun werde, ist es wirklich einfacher.
Frage: Habe ich mir Alternativen angesehen? A: Ich scheine die einzige zu sein, die sich an die FTS-Struktur wendet, ich würde es lieber wie erwartet arbeiten und eine einzigartige Lösung einreichen, als nur das zu tun, was alle anderen tun. Sobald die Anmutstage beginnen, werde ich es auch anders versuchen.
Frage: Haben Sie nachgeschlagen? A: Yup, es kam nur sehr wenig, was ich nicht sagen kann, war hilfreich.
Vielen Dank im Voraus für jeden Versuch zu helfen.