如何在C++; < C++ >是否可以在某种程度上获得指向打开文件的开始的指针,以便它(指针)可以与文件的大小一起传递到UNIX写函数?

如何在C++; < C++ >是否可以在某种程度上获得指向打开文件的开始的指针,以便它(指针)可以与文件的大小一起传递到UNIX写函数?,c++,unix,stdio,C++,Unix,Stdio,需要明确的是:我想将整个文件传递给一个类似写的函数-我该怎么做?您可以只传递完整的文件,然后传递这个指针进行写操作。您必须使用open(),而不是fopen()打开它。您可以只打开完整的文件,然后传递此指针进行写入。您必须使用open(),而不是fopen()打开它。在POSIX平台上通过网络发送时专门用于此目的,内核处理复杂的操作。在POSIX平台上通过网络发送时专门用于此目的,内核可以处理复杂的操作。您还不是很清楚-为什么不能使用fopen()或open()?您可以绕过文件流,使用seekp

需要明确的是:我想将整个文件传递给一个类似写的函数-我该怎么做?

您可以只传递完整的文件,然后传递这个指针进行写操作。您必须使用
open()
,而不是
fopen()
打开它。

您可以只打开完整的文件,然后传递此指针进行写入。您必须使用
open()
,而不是
fopen()
打开它。

在POSIX平台上通过网络发送时专门用于此目的,内核处理复杂的操作。

在POSIX平台上通过网络发送时专门用于此目的,内核可以处理复杂的操作。

您还不是很清楚-为什么不能使用fopen()或open()?您可以绕过文件流,使用seekp(ios_base::beg)将当前位置设置为文件的开头。您可以详细说明“指针”吗?内存指针,文件位置,文件指针,句柄。。。?也许一段相关的代码可以方便地更好地理解这个问题。我还没有任何代码-我正在寻找使用写和读函数发送文件的可能性-这可能吗?你不是很清楚-为什么不能使用fopen()或open()?你只需传递文件流并使用seekp即可(ios_base::beg)将当前位置设置为文件开头。您能详细说明一下“指针”吗?内存指针、文件位置、文件指针、句柄…?也许一段相关代码可以帮助更好地理解这个问题。我还没有任何代码-我正在寻找使用写和读函数发送文件的可能性-这可能吗?Sendfile(a)不可移植;(b)仅支持某些目标(例如,只有套接字)这绕过了用户空间!这意味着您实际上无法对数据执行任何操作,您可以命令内核复制数据!问题不清楚这是否就是应该执行的所有操作。如果是,这应该是最快的方式。“不可移植”让我有点恼火,我做了一个查找。你完全正确!你只能在linux世界中使用这个函数,其他UnixOID或windows不知道这个命令,也不以其他方式实现它。不过,如果你只针对linux,这应该是最好的方法。Sendfile(a)不可移植;(b)只支持某些目标(例如,只有套接字)这绕过了用户空间!这意味着您实际上无法对数据执行任何操作,您可以命令内核复制数据!问题不清楚这是否就是应该执行的所有操作。如果是,这应该是最快的方式。“不可移植”让我有点恼火,我做了一个查找。你完全正确!你只能在linux世界中使用这个函数,其他UnixOID或windows不知道这个命令,也不以其他方式实现它。不过,如果你只针对linux,这应该是最好的方法。并从fstat获取文件长度(2)打开文件后进行系统调用。并在打开文件后通过fstat(2)系统调用获取文件的长度。