是否有任何Linux API,如Windows获取Windows API,Mac获取Cocoa?

Tat*_*tat -1 linux api

我知道Windows平台有来自微软的Windows API,Mac从Apple获得Cocoa API.我想知道Linux社区中有哪些API?多谢.

Yuv*_*dam 8

由于您的问题非常笼统,我假设您指的是Linux内核API.

每个操作系统都为您提供了一些 API来执行低级操作,否则它就不会是一个操作系统了,现在呢?


Jus*_*ith 7

有许多API选项,这些API首先出现在我的脑海中,在一个草率的"更接近硬件,更可能被安装"到"更难以安装的硬件"订单,除非另有说明:

有一个Linux系统调用API,如/usr/include/syscall.h或/usr/include/sys/syscall.h中所述,如果您的内核是Linux,则100%保证存在.

有一个Linux控制台编程API,它控制在Linux控制台(不是终端窗口,但在X11启动之前的原始控制台中)运行的程序的字符显示.

有posix系统调用,几乎每个不是嵌入式系统的Linux都可以使用它.

有glibc,它比posix API更不常见,但通常存在.

Linux framebuffer API允许在原始级别进行图形编程,而无需运行窗口系统.

有用于字符/终端控制的ncurses API,可以在Linux控制台,xterm或通过ssh访问系统的终端模拟器中运行.

有Fresco(曾经被称为柏林),这是一个图形编程的API,没有X11的历史包袱.它很少在桌面上使用,并且没有很多在该环境中运行的应用程序.

X11 API适用于在标准X11图形界面下运行的程序.X11拥有大量的包装库,因为它非常复杂,非常灵活,而且直接编程非常繁琐.例如,IIRC X11没有定义任何类型的小部件(即文本框,按钮,菜单,滚动条等),这些小部件需要由您自己的代码实现.

有xlib/athena,它基本上只是一组实现简单丑陋小部件的库,它是使X11编程更容易的原始包装API.

Motif是xlib的专有继承者,而Lesstif是Motif的开源模拟.

有TK,它最初是作为Tcl语言的库,但是有perl,python,R和许多其他通用/实用脚本语言的绑定,并且是跨平台的,非常容易用于程序员,而且非常丑陋和古老的(即90年代早期的小部件设计,不支持滚轮或拖放).

GNUStep和*nix的objectiveC环境,包括Linux,它是一个X11包装器GUI工具包和一般编程API,派生自与Cocoa相同的nextStep系统.

有QT和GTK,这些是目前最常用的X11包装器图形工具包API.Qt也是一个跨平台的库,它试图与其他平台和嵌入式显示器很好地集成,例如在手机上.

Gnome和KDE分别建立在GTK和QT之上,与其他任何替代方案相比,具有更大的桌面集成,可用性,内存和CPU使用量 - 特别是尝试使用Gnome的人和KDE应用程序同时会有大量的冗余库以不兼容的方式(以两种桌面之间通常不集成的方式)执行相同的操作.

有WxWidgets,适用于跨平台应用程序.它在Linux上使用GTK,在Mac和Windows上使用本机工具包.

总结:就像其他一切一样,Linux有一系列令人眼花缭乱的API选择(令人眼花缭乱的API数组几乎是Linux应用程序中令人眼花缭乱的外观和感觉的源头).