mkstemp 在 Windows 和 Linux 之间的不同行为

different behaviour of mkstemp between windows and linux

提问人:Sterpu Mihai 提问时间:10/11/2023 更新时间:10/11/2023 访问量:22

问:

以下小应用程序在 Linux 和 Windows 上的行为会有所不同。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

char template[100];

int main()
{
  strncpy(template, "stXXXXXX", 11);
  mkstemp(template);
  printf("%s\n", template);
  return 0;
}

当简单地多次执行时,它将在 Windows 和 Linux 上产生预期的结果(即具有随机名称的不同文件)。 但是,如果我们在每次执行后也删除生成的文件:

  • 在 Linux 上,它将产生预期的结果
  • 在 Windows 上,它将生成相同的文件

enter image description here

在 Linux 和 Windows 上,我都使用了最新的 gcc 13。对于 Windows,我使用了 winlibs 的版本。

你知道为什么会这样吗?

Windows gcc mingw libc mkstemp

评论

0赞 ssbssa 10/12/2023
我想这是因为 mingw 版本使用 rand(),而没有人调用 .srand()

答: 暂无答案