问题标签 [mkstemp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3776 浏览

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

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

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

我搜索了一下,发现了很多关于小心mkstemp正确使用的警告。几篇博客文章说不要扔掉mkstemp. 有关于操作系统级文件句柄与 Python 级文件对象不同的讨论。很好,但我找不到最简单的编码模式来确保

  • mkstemp被调用以获取要写入的文件
  • 编写完成后,即使发生异常,Python 文件及其底层 os 文件句柄也会完全关闭。这正是我们可以通过with(open...模式获得的那种行为。

所以我的问题是,在 Python 中是否有一种很好的方法来创建和写入mkstemp生成的文件,可能使用不同类型的 with 语句,或者我必须手动执行fdopenorclose等​​操作。似乎应该有一个明确的模式。

0 投票
1 回答
135 浏览

python - 当我在多线程中使用 #Fabric put# 将 tempfile.mkstemp 创建的临时文件复制到远程文件时找不到文件

Python版本:2.6.4

面料版本:1.9.0

我有一个自动化测试框架,可以使用 threading.Thread(在我的案例中为 3 个线程)并行执行案例。

每个线程工作者都使用fabric put(我们在这个函数上做了一些包装)将由tempfile.mkstemp创建的临时文件复制到远程文件。

问题是它总是给我一个找不到文件的错误,该错误发生在异常提示的“放置”期间。

这是“放置”时的代码:

MyShell.py(MyFabShell 的父类)

MyFabShell.py:

调用 put 导致错误:

我最初怀疑该文件可能会在 期间被删除put,所以我发表了评论os.remove。但是,我又遇到了同样的错误。从异常日志来看,这不应该是“fabric put”的问题,因为在执行fabric get/put 之前抛出异常mkstemp涉及多线程时是否不安全?但是文件说“文件的创建没有竞争条件”或者我的案例是否因为 GIL 而失败?我怀疑这是因为当我只使用 1 个线程时,一切都会好起来的。

谁能给我一些关于我的错误的线索?我一直在努力解决这个问题:(

0 投票
1 回答
1404 浏览

c - mkstemp 函数的隐式声明

我的功能有问题mkstemp()。GCC 编译器cygwin生成警告:

海合会标志:-std=c99 -Wall

包括:

0 投票
2 回答
2283 浏览

c - 更改默认 mkstemp 的文件权限

我在 C 中调用以下代码:

我看到该文件是使用权限 600 (-rw--------) 创建的。我想将此临时文件创建为 -rw-rw-rw-

我尝试使用 umask,但这只对文件权限应用了掩码——至少这是我的理解。那么如何创建权限为 666 的文件呢?

谢谢

0 投票
1 回答
1102 浏览

python - Python:os.tmpfile 或 tempfile.mkstemp

我想打开一个外部配置文件并在编辑器中将其呈现给用户。

我正在考虑的解决方案是创建一个临时文件并将原始文件的内容复制到其中。然后将打开临时文件以供用户在默认编辑器中进行编辑。这一切都完成了,因为不应该将不正确的配置写入原始文件。

当用户保存更改并关闭编辑器时,python 脚本将检查更改是否可接受,如果是,则仅覆盖原始文件。

我做了一些研究,似乎有两种在 python 中创建临时文件的可能性:

它们之间有什么区别?哪一个更适合这项任务?或者有更好的方法吗?

谢谢

0 投票
2 回答
3343 浏览

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

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

0 投票
2 回答
399 浏览

c - 为什么我不能使用动态分配的字符串创建临时文件?

我正在尝试创建一个带有日志条目的目录mkstemp。但是,据我了解,我不能将字符串常量传递给mkstemp. 我为字符串分配内存并用于snprintf格式化我认为可以工作但mkstemp将 errno 设置为 EINVAL 的负值。

但是,在 linux手册中,mkstemp它清楚地说明了:

EINVAL 对于 mkstemp() 和 mkostemp():模板的最后六个字符不是 XXXXXX;现在模板没有改变。

此外,mkstemp从不修改我的动态字符串。

这个片段在我的两台 Linux 机器上都出现了一个错误,但是如果我删除动态分配的字符串并明确设置fname它可以工作

0 投票
1 回答
1604 浏览

android - mpiexec 抛出错误“mkstemp 失败,没有这样的文件或目录”

我已经为 Android 交叉编译了 MPICH 并对其进行了配置。当我按如下方式生成单个进程时,它工作正常

但是,如果参数“n”大于 1,Android 系统会响应以下错误,如下所示:

这可能与在 android 上创建的临时文件的名称有关?请帮忙。

0 投票
4 回答
24029 浏览

python - Python 写入 mkstemp() 文件

我正在使用以下方法创建一个 tmp 文件:

我正在尝试在此文件中写入:

确实我关闭了文件并正确执行,但是当我尝试 cat tmp 文件时,它仍然是空的。它看起来很基本,但我不知道为什么它不起作用,有什么解释吗?

0 投票
1 回答
79 浏览

freebsd - FreeBSD 监狱 mkstemp 失败

我正在尝试使用此设置在我的监狱中安装一些东西:我按照以下方法制作了自己的监狱风格:FreeBSD 论坛 到目前为止,一切对我来说都很好,我已经将 /usr/ports 和 fstab 安装到监狱,启动监狱并进入它。但是在监狱里我不能使用make。

例如:

我对这个错误感到有些困惑,以及没有可用的 vi 等等......