Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
Entendiendo el os.tmpname() de Lua en Windows

Estoy tratando de usar os.tmpname() de Lua en Windows (que usa tmpnam() debajo del capó), y estoy un poco desconcertado por los nombres de archivo que está devolviendo.

 > print(os.tmpname()) \s3e8.

Si lo envío directamente a Lua como io.open(os.tmpname(), "w") , intentará crear el archivo en el directorio raíz de la unidad actual. Esto parece bastante inapropiado, ya que a menudo no tenemos permiso para hacerlo.

Pero según este hilo:

https://mingw-users.narkive.com/L7VR1gxX/temporal-file-woes

Aparentemente, se supone que es una ruta relativa al directorio actual. Mencionaron este fragmento de una documentación de Microsoft:

Tenga en cuenta que cuando un nombre de archivo se antepone con una barra invertida y sin información de ruta, como \fname21, esto indica que el nombre es válido para el directorio de trabajo actual.

Pero ya no puedo encontrar la documentación que mencionaron en el hilo. Busqué en Google, tratando de encontrar la documentación más reciente y encontré esto: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tempnam-wtempnam-tmpnam-wtmpnam?view=msvc- 160

Estas son las reglas de generación mencionadas en la documentación anterior:

_tempnam generará un nombre de archivo único para un directorio elegido por las siguientes reglas:

Si la variable de entorno TMP se define y establece en un nombre de directorio válido, se generarán nombres de archivo únicos para el directorio especificado por TMP.

Si la variable de entorno TMP no está definida o si se establece en el nombre de un directorio que no existe, _tempnam utilizará el parámetro dir como la ruta para la que generará nombres únicos.

Si la variable de entorno TMP no está definida o si se establece en el nombre de un directorio que no existe, y si dir es NULL o se establece en el nombre de un directorio que no existe, _tempnam utilizará el directorio de trabajo actual para generar nombres únicos. Actualmente, si tanto TMP como dir especifican nombres de directorios que no existen, la llamada a la función _tempnam fallará.

Tengo definida la variable de entorno TMP , pero Lua siempre genera el tipo de rutas que mencioné en la parte superior.

Así que realmente, tengo dos preguntas:

  1. ¿Se supone que esto es una ruta relativa?
  2. Si es así, ¿por qué siempre genera una ruta relativa, en lugar de usar las variables TMP estándar?

Estoy probando esto con Lua 5.2 de LuaBinaries y el Lua integrado estáticamente en las compilaciones mpv de shinchiro .

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

De acuerdo con este hilo en lua-users.org, puede intentar pasar nulo.

bueno, lo resolví usando tmpname(NULL,NULL)... considera el directorio temporal del sistema. cuando uso tmpnam() en Windows en una raíz que no se puede escribir, el nombre de archivo generado (\algo) no se puede escribir... supongo que es un error de implementación

También tenga en cuenta el Manual de referencia de Lua 5.2

Cuando sea posible, puede preferir usar io.tmpfile , que elimina automáticamente el archivo cuando finaliza el programa.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda