我不想知道Windows和Linux中的API函数之间是否存在一一对应的关系,也不想知道每个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个)。
libc
不要期望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,反之亦然。