Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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
是否可以将格式化输出直接写入Windows上的句柄?_Windows - Fatal编程技术网

是否可以将格式化输出直接写入Windows上的句柄?

是否可以将格式化输出直接写入Windows上的句柄?,windows,Windows,我目前的破解方法是使用DuplicateHandle复制文件描述符句柄,使用_open_osfhandle打开文件描述符,使用_fdopen打开文件*,使用vfprintf,然后关闭文件。显然,这不是很好。我知道可以使用conio.h中的功能直接输出到当前控制台,但不幸的是,这不符合我的需要。您可以将sprintf转换为字符串并将其写入文件。如果您需要处理实际的C文件,您的方法可能是最短的安全方法。好的,我希望有一种方法可以在低内存条件下工作,或者不使用堆,但这可能足够好。低内存条件?如果在将单

我目前的破解方法是使用DuplicateHandle复制文件描述符句柄,使用_open_osfhandle打开文件描述符,使用_fdopen打开文件*,使用vfprintf,然后关闭文件。显然,这不是很好。我知道可以使用conio.h中的功能直接输出到当前控制台,但不幸的是,这不符合我的需要。

您可以将sprintf转换为字符串并将其写入文件。如果您需要处理实际的C文件,您的方法可能是最短的安全方法。好的,我希望有一种方法可以在低内存条件下工作,或者不使用堆,但这可能足够好。低内存条件?如果在将单个字符串推送到某个内核缓冲区之前对其进行格式化会对内存造成负担,那么您会遇到更大的问题。。。在这种情况下,避免分配内存的唯一方法是逐个字节地写入句柄,这是非常低效的。放松,让记忆在你身上流动;以后还有时间优化重要的分配。如果堆内存可用,则可以利用堆内存,如果不可用,则使用较慢的方法。这一点很重要的一个例子是,无论堆的条件如何,都必须记录一些关键任务数据。