标签: mkstemp

如何从文件描述符中获取FILE指针?

我正在玩mkstemp(),它提供了一个文件描述符,但我想通过fprintf()生成格式化的输出.有没有一种简单的方法可以将mkstemp()提供的文件描述符转换为适合与fprintf()一起使用的FILE*结构?

c posix mkstemp

79
推荐指数
2
解决办法
4万
查看次数

Python - 如何将"操作系统级别句柄转换为打开文件"转换为文件对象?

tempfile.mkstemp()返回:

一个元组,包含一个打开文件的操作系统级句柄(由os.open()返回)和该文件的绝对路径名,按顺序排列.

如何将操作系统级别的句柄转换为文件对象?

os.open()文档说明:

要将文件描述符包装在"文件对象"中,请使用fdopen().

所以我尝试过:

>>> import tempfile
>>> tup = tempfile.mkstemp()
>>> import os
>>> f = os.fdopen(tup[0])
>>> f.write('foo\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

python mkstemp fdopen temporary-files

50
推荐指数
3
解决办法
2万
查看次数

如何为临时文件创建std :: ofstream?

好的,mkstemp是在POSIX中创建临时文件的首选方法.

但它会打开文件并返回一个int文件描述符.从那以后我只能创建一个FILE*,而不是一个std::ofstream,我更喜欢C++.(显然,在AIX和其他一些系统上,您可以std::ofstream从文件描述符创建一个,但是当我尝试时,我的编译器会抱怨.)

我知道我可以获得一个临时文件名,tmpnam然后用它打开我自己的ofstream,但由于竞争条件,这显然是不安全的,并导致编译器警告(Linux上的g ++ v3.4.):

warning: the use of `tmpnam' is dangerous, better use `mkstemp'
Run Code Online (Sandbox Code Playgroud)

那么,是否有任何可移植的方法来创建std::ofstream临时文件?

c++ file-io file mkstemp

36
推荐指数
2
解决办法
2万
查看次数

win32的mkstemp()实现

任何人都可以指向我在Win32上实现mkstemp()(C/C++)的代码,或非常接近的模拟代码.

必须是无种族的.

应该看起来像

#include <windows.h>
#include <io.h>

// port of mkstemp() to win32. race-free.
// behaviour as described in http://linux.die.net/man/3/mkstemp
// 
int mkstemp(char *template) {
     ...
}
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ winapi mkstemp

10
推荐指数
2
解决办法
1万
查看次数

什么是mkstemp的C++标准库等价物?

我正在转换使用POSIX临时文件FILE到C++标准库iostreams的程序.什么是mkstemp的正确替代品?

c++ mkstemp libstdc++

9
推荐指数
3
解决办法
7594
查看次数

Python在mkstemp()文件中写入

我正在创建一个tmp文件:

from tempfile import mkstemp
Run Code Online (Sandbox Code Playgroud)

我想写这个文件:

tmp_file = mkstemp()
file = open(tmp_file, 'w')
file.write('TEST\n')
Run Code Online (Sandbox Code Playgroud)

事实上,我关闭文件并正确执行但是当我尝试捕获tmp文件时,它仍然是空的..它看起来基本但我不知道为什么它不起作用,任何解释?

python mkstemp

6
推荐指数
3
解决办法
9519
查看次数

获取由mkstemp()创建的文件名

是否可以从调用中获取文件名(和路径)mkstemp()?如果"是",怎么样?

c file mkstemp

3
推荐指数
1
解决办法
1685
查看次数

有没有办法自动关闭mkstemp()返回的Python临时文件

通常我使用with语句在Python中处理文件,就像在这个块中通过HTTP下载资源一样:

with (open(filename), "wb"):
    for chunk in request.iter_content(chunk_size=1024):
        if chunk:
            file.write(chunk)
            file.flush()
Run Code Online (Sandbox Code Playgroud)

但这假设我知道文件名.假设我想使用tempfile.mkstemp().此函数返回打开文件和路径名的句柄,因此openwith语句中使用将是错误的.

我搜索了一下,发现了很多关于小心使用的警告mkstemp.一些博客文章几乎喊出来,当他们说不要扔掉返回的整数mkstemp.有关os级文件句柄与Python级文件对象不同的讨论.这没关系,但我找不到最简单的编码模式来确保这一点

  • mkstemp 被调用来获取要写入的文件
  • 写完之后,即使出现异常,Python文件及其底层的os文件句柄也会干净地关闭.这正是我们可以通过with(open...模式获得的行为.

所以我的问题是,在Python中有一种很好的方式来创建和写入mkstemp生成的文件,可能使用不同类型的状态,或者我必须手动执行类似fdopenclose等等.似乎应该有一个明确的这种模式.

python mkstemp

2
推荐指数
1
解决办法
1691
查看次数

标签 统计

mkstemp ×8

c++ ×3

python ×3

c ×2

file ×2

fdopen ×1

file-io ×1

libstdc++ ×1

posix ×1

temporary-files ×1

winapi ×1