hallo
Bin mich gerade in asm einarbeiten(gas-syntax). Hatte vor ein programm zu schreiben, das den verzeichnissinhalt auflistet. Doch unter asm/unistd.h konnte ich kein syscall eintrag für opendir finden.
Was muss ich da nutzen ?
danke
bye
opendir syscall nummer
Re: opendir syscall nummer
Die ls - Implementierung der asmutils benutzt folgenden Syscall:
getdents (141)
get directory entries
arg:
eax - 141,
ebx - uint fd
ecx - struct dirent *dirp
edx - uint count
return:
eax - no. of bytes read
errors:
badf, fault, inval, noent, notdir
ref unistd.h, linux/dirent.h, linux/unistd.h
NOTE: False description of structure <dirent> in man 2 de getdents:
2nd item, "d_off", is offset from beginning of directory file to concerning entry.
getdents (141)
get directory entries
arg:
eax - 141,
ebx - uint fd
ecx - struct dirent *dirp
edx - uint count
return:
eax - no. of bytes read
errors:
badf, fault, inval, noent, notdir
ref unistd.h, linux/dirent.h, linux/unistd.h
NOTE: False description of structure <dirent> in man 2 de getdents:
2nd item, "d_off", is offset from beginning of directory file to concerning entry.
Re: opendir syscall nummer
Hallo snake!
Nur zur Information: Dass du keinen Syscall-Eintrag dafür gefunden hast, liegt daran, dass es sich nicht um einen Systemruf handelt, sondern um eine Funktion der C-Bibliothek. Das sieht man aber auch, wenn man die Manpage davon aufruft. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Cheers,
GNU/Wolfgang
Nur zur Information: Dass du keinen Syscall-Eintrag dafür gefunden hast, liegt daran, dass es sich nicht um einen Systemruf handelt, sondern um eine Funktion der C-Bibliothek. Das sieht man aber auch, wenn man die Manpage davon aufruft. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Cheers,
GNU/Wolfgang
Re: opendir syscall nummer
danke für die antworten
Doch weiss jemand wie das in der c-bibliothek realisiert worden ist ?
Wie kann ich ein Verzeichniss auslesen mit syscalls ?
(ein verzeichniss ist ja auch nur eine datei, mit den dateinamen und inode-nummern der dateien im verzeichniss, kann es sein das ich mit open öffnen muss und dann mit readdir(ist glaube ich ein syscall) lesen kann ???)
danke
bye
ps:
@sascha: hättest du mir da den link zu den asmutils, hört sich interessant an
Doch weiss jemand wie das in der c-bibliothek realisiert worden ist ?
Wie kann ich ein Verzeichniss auslesen mit syscalls ?
(ein verzeichniss ist ja auch nur eine datei, mit den dateinamen und inode-nummern der dateien im verzeichniss, kann es sein das ich mit open öffnen muss und dann mit readdir(ist glaube ich ein syscall) lesen kann ???)
danke
bye
ps:
@sascha: hättest du mir da den link zu den asmutils, hört sich interessant an
Re: opendir syscall nummer
Hi snake!
> Doch weiss jemand wie das in der c-bibliothek realisiert worden ist ?
Schau doch einfach nach.
> Wie kann ich ein Verzeichniss auslesen mit syscalls ?
Mit getdents(), das hat Sascha bereits gesagt.
> (ein verzeichniss ist ja auch nur eine datei, mit den dateinamen und inode-nummern der dateien im verzeichniss, kann es sein das ich mit open öffnen muss
Nein, in Unix-Systemen (und Unix-Klonen) kannst du ein Verzeichnis nicht mit open() öffnen, denn Unix unterscheidet im Gegensatz zu GNU/Hurd sehr wohl zwischen Verzeichnissen und Dateien.
> und dann mit readdir(ist glaube ich ein syscall) lesen kann ???)
Seufz. Nein, auch das ist _kein_ Systemruf und auch in diesem Fall kann man das an der Manpage sehen.
Cheers,
GNU/Wolfgang
> Doch weiss jemand wie das in der c-bibliothek realisiert worden ist ?
Schau doch einfach nach.
> Wie kann ich ein Verzeichniss auslesen mit syscalls ?
Mit getdents(), das hat Sascha bereits gesagt.
> (ein verzeichniss ist ja auch nur eine datei, mit den dateinamen und inode-nummern der dateien im verzeichniss, kann es sein das ich mit open öffnen muss
Nein, in Unix-Systemen (und Unix-Klonen) kannst du ein Verzeichnis nicht mit open() öffnen, denn Unix unterscheidet im Gegensatz zu GNU/Hurd sehr wohl zwischen Verzeichnissen und Dateien.
> und dann mit readdir(ist glaube ich ein syscall) lesen kann ???)
Seufz. Nein, auch das ist _kein_ Systemruf und auch in diesem Fall kann man das an der Manpage sehen.
Cheers,
GNU/Wolfgang
Re: opendir syscall nummer
hallo gnu/wolfgang
(kann ich eine kopie von dir haben
>Schau doch einfach nach.
Stimmt ! Bin in solchen sachen halt eher ein newbie und in den code von grossen projekten zu schauen ist für mich halt neu. (ich weiss, so lernt man am besten, muss halt das risiko mich im code-dschungel zu verlieren eingehen
>Mit getdents(), das hat Sascha bereits gesagt.
Ich dachte da bräuchte es etwas mehr, erst halt öffnen und dann auslesen.
>Seufz. Nein, auch das ist _kein_ Systemruf und auch in diesem Fall kann man das an der Manpage sehen.
Ok die manpage sagt es sei kein syscall, doch trotzdem existiert ein eintrag in der asm/unistd.h (89) !?!
danke
bye
ps: ich muss mir wircklich angewöhnen, die manpages öfter zu konsultieren, danke
(kann ich eine kopie von dir haben
>Schau doch einfach nach.
Stimmt ! Bin in solchen sachen halt eher ein newbie und in den code von grossen projekten zu schauen ist für mich halt neu. (ich weiss, so lernt man am besten, muss halt das risiko mich im code-dschungel zu verlieren eingehen
>Mit getdents(), das hat Sascha bereits gesagt.
Ich dachte da bräuchte es etwas mehr, erst halt öffnen und dann auslesen.
>Seufz. Nein, auch das ist _kein_ Systemruf und auch in diesem Fall kann man das an der Manpage sehen.
Ok die manpage sagt es sei kein syscall, doch trotzdem existiert ein eintrag in der asm/unistd.h (89) !?!
danke
bye
ps: ich muss mir wircklich angewöhnen, die manpages öfter zu konsultieren, danke