Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一些C和Unix函数之间的关系是什么_C_Linux_Unix - Fatal编程技术网

一些C和Unix函数之间的关系是什么

一些C和Unix函数之间的关系是什么,c,linux,unix,C,Linux,Unix,例如,在C中,我们有fopen,在Unix中,我们有open。他们之间有一些细微的差别,但他们在做同样的事情 C和Unix中还存在许多其他函数,它们之间的关系是什么?我应该选择哪一个?在成功时返回一个文件*,但在成功时返回一个文件描述符,因此它们没有执行相同的操作(因为没有提供相同的类型) 但是,在Linux上,fopen在内部使用open(还有一些其他的…) 文件句柄正在处理缓冲。使用诸如open和read之类的系统调用,您最好自己进行缓冲 另请参见&并阅读&。请注意,在Linux上,从用户和

例如,在C中,我们有
fopen
,在Unix中,我们有
open
。他们之间有一些细微的差别,但他们在做同样的事情

C和Unix中还存在许多其他函数,它们之间的关系是什么?我应该选择哪一个?

在成功时返回一个
文件*
,但在成功时返回一个文件描述符,因此它们没有执行相同的操作(因为没有提供相同的类型)

但是,在Linux上,
fopen
在内部使用
open
(还有一些其他的…)

文件句柄正在处理缓冲。使用诸如
open
read
之类的系统调用,您最好自己进行缓冲

另请参见&并阅读&。请注意,在Linux上,从用户和应用程序的角度来看,系统调用本质上是一种原子基本操作(例如
SYSCALL
syscenter
机器指令)

用于查明(通过给定的进程或命令)执行了哪些系统调用

在Linux上,正在实现系统调用上方的标准函数(如
fprintf
…)


许多系统调用没有任何libc对应项(包装器除外),例如,

open是来自Unix系统的系统调用。 fopen是打开文件的标准c函数

使用fopen比使用open有一些优点

  • 它是多平台的,因为它是C标准,您可以使用C编译器将程序移植到任何平台

  • 它支持使用C标准函数(即:fprintf、fscanf)

  • 如果处理文本文件,这些函数可以处理不同的新行字符(Unix/Windows)


基本区别,
C
是一种语言,
Unix
是一种操作系统。如果您的目标是Unix系统,请选择标准库函数。如果该函数不可用,则首选POSIX函数。如果不可用,请使用本地SO功能。。。如果没有,写下你自己的。答案如下: