在Linux中相当于Win32 API?
我不想知道Windows和Linux中的API函数之间是否存在一一对应的关系,也不想知道每个API函数。
我只想了解两点基本知识:
- 我想了解为什么Qt平台独立
- 我想知道我应该在Linux中使用什么API来移植使用Win32 API编程的应用程序,或者换句话说,移植到Win32 API级别。
我知道这不切实际,但我想知道这种等效性。
回答:
您需要了解什么是系统调用。在Linux上,它们是最低的用户土地API(相比之下,Win32
API可能将真实的内核syscall与某些库函数libc
混合在一起。在Linux上也是如此。)fork(2),execve(2),open(2),pipe(2),mmap(2),read(2),poll(2),close(2),dup2(2),sigaction(2)是重要的系统调用(但其中大约有300个)。
不要期望Linux上可以使用每种Windows功能(反之亦然)。甚至不要想到这样的等同物。在Linux上获得不同的心态。(特别是,进程在Linux和Windows上是非常不同的)。
不要忘记Linux是 ,您可以深入研究Linux上使用的每个功能的源代码。阅读,搜索,改进.....
首先阅读intro(2)手册页,以及其他几个手册页(特别是syscalls(2),intro(3)等…)。另请阅读例如Advanced Linux
Programming和Advanced Unix
Programming。
一些库尝试排除并提供Posix(例如Linux)和Windows的通用抽象。特别是Qt(以及Gtk)。
如果您对图形界面感兴趣,请了解X11的重要作用(请注意,X11服务器离屏幕和键盘最近;大多数图形应用程序都是X11客户端)。在2016年,X11往往会被Wayland取代(但如果您针对Qt或GTK进行编码,您将不会注意到实现“详细信息”-一个非常重要的实现)
如果您仅使用Qt调用(未记录为特定于Linux或Windows的代码)以及标准C ++函数编写应用程序,则应将其从Linux移植到Windows,反之亦然。
以上是 在Linux中相当于Win32 API? 的全部内容, 来源链接: utcz.com/qa/426270.html