Estoy jugando con mkstemp(), que proporciona un descriptor de archivo, pero quiero generar una salida formateada a través de fprintf(). ¿Hay alguna manera fácil de transformar el descriptor de archivo proporcionado por mkstemp() en una estructura FILE * que sea adecuada para usar con fprintf()?¿Cómo obtener un puntero ARCHIVO desde un descriptor de archivo?
Respuesta
Uso fdopen()
:
FILE* fp = fdopen(fd, "w");
Y para obtener el descriptor de archivo de un ARCHIVO * use 'fileno()': http://linux.die.net/man/3/fileno –
si 'fd' se abrió con algunos indicadores (como' O_NONBLOCK') - ¿qué pasará con ellos después de que 'fdopen' lo abra con nuevos indicadores? ¿Serán 'xor'-ed juntos o sustituidos? – xealits
No disponible en ANSI C. – jww
FILE* f = fdopen(d, "w");
hombre de salida fdopen:
SINOPSIS
#include <stdio.h>
FILE *
fdopen(int fildes, const char *mode);
La función
fdopen()
asocia una secuencia con el descriptor de archivo existente,fildes
. El modo de la secuencia debe ser compatible con el modo del descriptor de archivo. Cuando la transmisión se cierra a través defclose(3)
, también se cierrafildes
.
No disponible en ANSI C. – jww
Para más información claridad, consulte https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.2.0/com.ibm.zos.v2r2.bpxbd00/rtfdo.htm –
No hay una forma estándar de hacer esto (o al revés) ya que el C Standard no tiene nada que decir sobre los descriptores de archivos. Su plataforma específica puede o no proporcionar dicho mecanismo.
Depende de lo que quiere decir con "estándar". POSIX es un estándar. –
Sin embargo, la pregunta era sobre C. –
, La función fdopen() cumple con IEEE Std 1003.1-1988 ('' POSIX.1 ''). –
- 1. ¿Cómo obtener una secuencia FILE * desde un descriptor de archivo?
- 2. ¿Cómo puedo convertir un puntero de archivo (FILE * fp) a un descriptor de archivo (int fd)?
- 3. ¿Cómo ejecutar un programa desde el descriptor de archivo?
- 4. Crear objeto fstream desde un archivo * puntero
- 5. ¿Fopen crea un descriptor de archivo?
- 6. El uso de un descriptor de archivo numerado desde Java
- 7. descriptor de socket vs descriptor de archivo
- 8. ¿Cómo obtener OID desde un archivo MIB?
- 9. ¿Cómo puedo encontrar un nombre de archivo, dado un puntero ARCHIVO?
- 10. descriptor de archivo de un std :: fstream
- 11. ¿ftell en un descriptor de archivo?
- 12. ¿Cómo puedo obtener un nombre de archivo de un descriptor de archivo dentro de un módulo kernel?
- 13. ¿Cómo determinar si un descriptor de archivo es buscable?
- 14. ¿Cómo verificar si un descriptor de archivo tiene datos disponibles?
- 15. En c, ¿cómo hacer que un descriptor de archivo bloquee?
- 16. Cómo volver a abrir un descriptor de archivo cerrado
- 17. ¿Cuánta información se almacena realmente en un descriptor de archivo?
- 18. ¿Cómo obtener un nombre de archivo temporal?
- 19. Obtención de un ARCHIVO * desde un archivo estándar
- 20. Descriptor de archivo duplicado con su propio desplazamiento de archivo
- 21. Transmitiendo un archivo desde SharpSSH
- 22. Devolver un flujo de entrada desde el descriptor de archivo de parcela usando Androids DownloadManager
- 23. NUL descriptor de archivo (isatty es falso)
- 24. Crear un archivo jar desde un archivo de Scala
- 25. Cómo abrir un archivo externo desde HTML
- 26. Cómo obtener un nombre de archivo sin extensión desde la ruta del archivo en Ruby
- 27. llamando fdopen: descriptor de archivo incorrecto
- 28. Cómo obtener un archivo Makefile de qmake
- 29. Node.js: EBADF, descriptor de archivo incorrecto
- 30. obtener el archivo JAR desde
Y el inverso: [¿Cómo puedo convertir un puntero de archivo (FILE *) a un descriptor de archivo (fd)?] (Http://stackoverflow.com/questions/3167298/how-can-i-convert-a -file-pointer-file-to-a-file-descriptor-fd) –