2016-03-26 7 views
-1

Unter Linux sind die Systemaufrufe in C-Header-Dateien verfügbar.Sind Systemaufrufe in anderen Sprachen als C verfügbar?

Ich frage mich, ob die Systemaufrufe eines Betriebssystems in anderen Sprachen verfügbar sind?

Wenn ich richtig bin, sind Systemaufrufe Betriebssystem-spezifisch. Oder korrigiere mich, wenn ich falsch liege.

In C++, Java, Python, OCaml und anderen High-Level-Sprachen gibt es Betriebssystembibliotheken in diesen Sprachen. Sind das nicht Systemaufrufe, sondern APIs, die aufgrund von Systemaufrufen implementiert werden? Sind ihre Schnittstellen vom Betriebssystem unabhängig (z. B. die gleiche Programmierschnittstelle unter Linux und Windows)?

Java läuft auf JVM, also denke ich, dass seine OS-bezogenen Funktionen OS-unabhängig sind.

Python läuft auf seinen Interpretern, die normalerweise über Betriebssysteme verfügbar sind, also denke ich, dass seine OS bezogenen Sachen OS-unabhängig sind.

Danke.

+2

Was, wie eine Art von [Portable Operating System Interface] (https://en.wikipedia.org/wiki/POSIX)? –

+0

Ihre Frage ist sprachabhängiger als vom Betriebssystem abhängig. Beispielsweise könnten Sie eine LISP-Funktion in Assemblersprache schreiben, die eine OS-API aufruft und dann die Funktion aus LISP-Code aufruft. Auch hier müßtest du * jede * Sprache recherchieren, um deine Frage beantworten zu können. –

+0

Nehmen wir ein anderes Beispiel: Fortran. Die Fortran-Sprache verfügt über eine spezifizierte Schnittstelle zum Aufrufen von Funktionen (z. B. Übergabe und Rückgabe von Parametern). Ich kann eine Funktion in Assembler schreiben, die einen SPI-Bus-Port liest und den gelesenen Wert zurückgibt. Solange meine Assemblersprache den Fortran-Aufrufkonventionen entspricht, kann ich sie mit meinem Fortran-Programm verknüpfen und von Fortran aus aufrufen. –

Antwort

1

Die OS-Systemaufrufe sind immer verfügbar.

Die Frage ist, ob eine Sprache die Fähigkeit hat, diese Anrufe zu tätigen.

Ich schlage vor, Sie jede Sprache einzeln Forschung, einschließlich anderen Sprachen Sie nicht markiert haben: FORTRAN, BASIC, Perl, Lisp, Ruby, Scheme, Haskell, Ada, usw.

Es gibt keine Anforderung für Sprachen gemeinsame Kerne haben.

+0

Danke. In "Es ist nicht erforderlich, dass Sprachen gemeinsame Kerne haben", was meinen Sie mit "gemeinsam"? Gleich für mehrere Betriebssysteme? – Tim

+0

Sie können nicht davon ausgehen, dass alle Computersprachen eine gemeinsame Syntax oder gemeinsame Methoden für den Zugriff auf Systemfunktionen haben. Zum Beispiel teilen Java und C++ viel gemeinsam. C++ und LISP sehen jedoch überhaupt nicht gleich aus. –