c - C 库的实现是否依赖于操作系统?

标签 c operating-system systems-programming

我只是想知道不同的操作系统有不同的功能,但它们的用途相同,或者可以说不同的操作系统有不同的系统编程语言(比如Windows vs UNIX)。

因此,例如,由于 C 库包含函数的实现,它们的实现必须调用不同的函数(取决于操作系统),以实现相同的事情。这样对吗? 那么,cygwin 中用于编译专门为 Windows 编写的 C 程序的库,以及 gcc 的库,尤其是用于 Linux 的库?我对么? 如果不是,那又是为什么?

最佳答案

是的,没错。不同的操作系统有不同的功能来做同样的事情。例如,在 Windows 上,您可以通过调用 CreateThread() 创建线程,而在 Linux 上,您可以调用 pthread_create()

关于 C 运行时,所有操作系统都实现了它们,但有所不同。在 Windows 上,fopen() 是将调用 CreateFile() 的包装器,而在 linux 上,fopen() 的包装器打开()

Cygwin 等添加库以在 Windows 上实现 linux-only 功能。例如,cygwin 将通过包装 CreateThread() 在 Windows 上实现 pthread_create(),就像 MS 为 fopen() 所做的那样。

关于c - C 库的实现是否依赖于操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544992/

相关文章:

c - avr内联汇编错误: impossible constraint

c - C 中 sqlite3_exec 的语法错误,但在 sqlite3 CLI 程序中工作正常

c - 在 C 中使用按位运算符查找 x 是否大于 y

c - 跨上下文切换使用 rdtsc + rdtscp

c - 无法从共享对象打印到文件

debugging - Windows、Linux、OSX 上调试器的低级详细信息

更改结构中元素的值

Android,我可以根据自己的喜好操作操作系统吗?

java - 当你运行java字节码时操作系统会做什么?它如何与 JVM 交互?

c++ - C/C++ 如何判断一个程序是否已经在运行?