PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : <sys/*> - Sinn und Zweck?



Deever
24-04-2005, 19:54
Hey Amigos, wie geht's?

Nach der Lektüre von diesem (http://www.acm.uiuc.edu/webmonkeys/book/c_guide/index.html) frage ich mich nun: Warum werden teilweise recht wichtige Funktionen/Funktionalitäten nicht direkt unter /usr/include, sondern unter sys/ definiert?

Vielen Dank für eure Antworten!
Gruß,
/dev

SeeksTheMoon
25-04-2005, 09:50
in sys befinden sich systemabhängige Sachen, bzw Sachen zur Systemprogrammierung. Die befinden sich nicht im Standard-include, weil es weder Standard-C Header, noch Header von irgendeinem einem Zusatz-Programm sind.
socket.h, mount.h, elf.h usw wirst Du bestimmt nicht auf anderen Systemen finden (zumindest nicht unter Unix-Systemen)

Deever
25-04-2005, 17:16
in sys befinden sich systemabhängige Sachen, bzw Sachen zur Systemprogrammierung. Die befinden sich nicht im Standard-include, weil es weder Standard-C Header, noch Header von irgendeinem einem Zusatz-Programm sind.Soweit kann ich es noch unterschreiben, jedoch

socket.h, mount.h, elf.h usw wirst Du bestimmt nicht auf anderen Systemen finden (zumindest nicht unter Unix-Systemen)Warum nicht? Sowohl Sockets wie erst recht das Mounten dürften doch UNIX-weit gültig sein?

Gruß,
/dev

peschmae
25-04-2005, 18:06
da war wohl entweder ein nicht zuwenig :D

MfG Peschmä

SeeksTheMoon
25-04-2005, 18:51
ja, da habe ich mich vertippt; es sollte jetzt klar sein was ich gemeint habe :D

Deever
27-04-2005, 00:04
Ich hab jetzt eine Zwischenfrage: Warum eigentlich bietet die GNU libc eine Funktion mount()? Das Mounten ist ja sowieso kernelspezifisch und hat daher in der libc doch nix verloren, oder irre ich da?

Gruß,
/dev

peschmae
27-04-2005, 06:24
Ich hab jetzt eine Zwischenfrage: Warum eigentlich bietet die GNU libc eine Funktion mount()?

Weil das irgendjemand mal gebraucht und eingebaut hat...


Das Mounten ist ja sowieso kernelspezifisch und hat daher in der libc doch nix verloren, oder irre ich da?


Naja, das steht ja auch so dort:
These functions are Linux-specific and should not be used in programs intended to be portable.

Wo sollte die Funktion denn sonst hin? Gibts irgendwo einen Library für kernelspezifisches Zeugs?

MfG Peschmä

Deever
02-05-2005, 03:47
Du hast eigentlich Recht. Man kann die libc als "kernelspezifischen Teil" für Programme sehen.
Mit Obigem habe ich nun auch eine Dokumentation gefunden, die das "Standard-C" abdeckt. Gibt es so etwas Ähnliches auch für die Funktionalität unter sys/?

Gruß,
/dev

Deever
02-05-2005, 08:53
Gibt es so etwas Ähnliches auch für die Funktionalität unter sys/?Also 'zgrep "<sys/" /usr/man/man2/* | awk '{print substr($0,15,index($0,"."));}' | cut -f1 -d. | sort | uniq' liefert mir schon mal die Funktionen, ich glaub, weiter schaff ichs schon selber! ;)
Außer: Hat jemand hier ein anderes Unix als Linux? Die Kompatibilität bzw. Ähnlichkeit würde mich mal interessiern.

Gruß,
/dev

panzi
02-05-2005, 14:45
Naja, für die POSIX API gibts das hier:
http://www.opengroup.org/onlinepubs/009695399/

Alle POSIX kompatieblen Betriebssysteme sollten das unterstützen. (Zumindest zu einen Teil.)

Deever
02-05-2005, 19:02
Jo, danke! Sieht aus, als ließe sichs parsen...

Gruß,
/dev