Meta Engineer?

This is available as OS\mkostemps in the www repository.

Create a temporary file using a template filename, with an invariant suffix, and the specified open flags

namespace HH\Lib\OS;

function mkostemps(
  string $template,
  int $suffix_length,
  int $flags,
): (FileDescriptor, string);

The template must contain exactly 6 X characters, followed immediately by the invariant suffix.

The length of the suffix must be specified; for example, if the template is fooXXXXXXbar, the suffix len is 3, or for fooXXXXXXbarbaz it is 6. For fooXXXXXXXXXXXXXXXXXX, any suffix len between 0 and 12 is valid.

The template may be either a relative or absolute path, however the parent directory must already exist.

This function takes the same flags as OS\open(); like that function, O_CLOEXEC is implied.

The temporary file:

  • will be a new file (i.e. O_CREAT | O_EXCL)
  • be owned by the current user
  • be created with mode 0600


  • string $template
  • int $suffix_length
  • int $flags