0

我开始从 Windows 转向 Linux 开发。在这个过程中,我需要“忘记”所有熟悉的 Windows API(WaitForSingleObject等等CreateTimer),而是学习一堆 Linux 特定的 API。
所以,我的问题是……我应该吗?我的意思是,如果像Boost
这样的 跨平台库在 Linux 社区中普遍使用,我真的需要提前学习 Linux 特定的 API 吗?

我很清楚,至少熟悉 API 是个好主意,但是……在专业行业中最常见的是什么?大多数专注于 Linux 的软件公司是否使用跨平台库或特定于操作系统的 API?

4

2 回答 2

3

这取决于您要使用/需要的复杂程度。例如,Linux 具有SEM_UNDOSystem V 信号量选项,当使用 boost 时,该选项不可用。一般来说,增强可移植性并不是免费的,您将只能使用不同 O/S 可能性的公共子集。如果这对你来说已经足够了,那就去提升,不要处理(有时)晦涩的低级 API。这不仅应该使您的程序更便携(在某种程度上),而且更不容易出错。

于 2012-08-19T14:19:56.310 回答
3

作为一名纯 C 程序员,我依赖于长期成功的POSIX 标准。对我来说,这是我在基于 UNIX 的系统中使用过的最好的可移植 API。正如@Shi 在评论中指出的那样,无论您是为嵌入式计算机还是台式机/服务器计算机进行开发都很重要,因为 Boost 非常重。我也是一名嵌入式系统开发人员,即使对于uCLinux(嵌入式系统的微型 Linux 端口),POSIX 标准也非常可移植。

我认为 POSIX 标准的优势在于它的低级实现。它处理多年来不太可能发生变化的基本计算机概念(设备 I/O、内存管理、IPC...)。我们习惯于看到我们与计算机交互方式的变化,而不是计算机实际工作方式的变化,而 POSIX 标准由于其在处理计算机工作方式方面的成熟度而非常强大。确实,我爱上了那些神奇的函数,比如 fork()、pipe()、read() 和 write() :-)

于 2012-08-19T14:22:50.450 回答