Linux下有什么函数是好像windows下的HeapAlloc函数的

Linux下有什么函数是好像windows下的HeapAlloc函数的,第1张

标准 C 库函数以及数据类型等在任何 *** 作系统下都可以编译运行,并且效果是完全一样的,但其内部的实现原理及存储方式不一定一样。这些库函数实际上在不同系统 *** 作系统上的实现就是依赖于 *** 作系统本身的 API。Linux 上当然就是 Linux 的 API,而 Windows 则是 Windows API。就像最常见的 fopen 函数,在 Windows 上他是通过 CreateFile 函数实现的,而 Linux 上则是通过 open 函数。API 说白了就是函数,通常说 API 指的是 *** 作系统函数。Linux 的 shell 相当于 Windows 的命令行,它只不过是一个解析命令和执行程序的环境。这个环境其实也是一个独立的程序。任何平台的程序要运行,就得依赖于该 *** 作系统的 API。shell 也是个程序,怎么能说 shell 在 Windows 上相当于 Windows API 呢?glibc 个人理解相当于 Windows 上的动态库,实际上 C 程序运行时调用的库函数就是通过这个 glibc 与 *** 作系统进行交互的,而在 Windows 上则是通过 CRT 也就是 C 运行时库来与 *** 作系统交互的。像 fopen 这样的 C 标准库函数。当在 Windows 上编译时,其链接到 msvcrt,在 Linux 上编译是,其链接到 glibc。而 glibc 与 msvcrt 内部分别调用了自身系统的 API 如 open 或 CreateFile 来分别实现 fopen 的功能。

1)、在Red Hat Linux中函数库可以分为3种类型:静态函数库、共享函数库和动态加载函数库。

静态函数库在应用程序编译时就把函数的执行代码加入到应用程序中。

共享函数库中的函数当一个可执行程序启动时被加载。

动态加载函数库可以在程序运行的任何阶段加载函数。

2)、使用nm和ldd命令可以获得关于库函数的信息。

nm命令可以列出一个函数库文件中的符号表,它对静态的库函数和共享的库函数都能起作用。

ldd命令可以列出一个程序正常运行所需要的共享库。

3)、库函数缺省存放在/lib和/usr/lib中,以及动态库配置文件内所列的目录中。

如果库函数没有在这些目录下,可以在中加入所须目录,后运行ldconfig命令,使之生效。或设置环境变量LD_LIBRARY_PATH或LD_PRELOAD加入库函数所存放的目录。

还有不会的请参考《linux就该这么学》,针对各种linux疑难杂症,帮助linux学习者。

Linux中open与fopen区别如下:

1、来源

从来源的角度看,两者能很好地区分开,这也是最显而易见的区别:

①open是Unix系统调用函数,返回的是文件描述符,它是文件在文件描述符表里的索引

②fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。

2、移植性

这一点从上面的来源可以推断出来,fopen是C标准函数,因此拥有良好的移植性,而open是Unix系统调用,移植性有限。如Windows下相似的功能使用API函数CreateFile。

3、适用范围

①open返回文件描述符,而文件描述符是Unix系统下的一个重要概念,Unix下的一切设备都是以文件的形式 *** 作。如网络套接字、硬件设备等。当然包括 *** 作普通正规文件。

②fopen是用来 *** 纵普通正规文件。

4、文件IO层次

如果从文件IO的角度来看,前者属于低级IO函数,后者属于高级IO函数。低级和高级的简单区分标准是:谁离系统内核更近。低级文件IO运行在内核态,高级文件IO运行在用户态。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7565211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存