Comment traiter les données de RAM comme si elle était un vrai fichier?
Question
J'ai donc des données temporaires dans mon programme (en RAM). Je veux faire en quelque sorte, il semble que c'est un fichier (par exemple pour l'envoyer dans un autre programme qui prend un lien de fichier comme argument)?
Est-il possible?
Comment faire une telle chose?
La solution
Vous pouvez le faire en C en utilisant la fonction popen()
:
FILE *f = popen("program args", "w");
// write your output to f here using stdio
pclose(f);
Ceci est possible si votre programme externe lit son entrée à partir stdin
.
Autres conseils
Pourquoi pas écrire simplement le fichier sur le disque? Si l'écriture sur le disque est trop lent, vous pouvez passer le drapeau Si pris en charge par votre système d'exploitation (systèmes Unixoid et Windows ne), vous pouvez essayer d'utiliser fichiers mappés en mémoire . FILE_ATTRIBUTE_TEMPORARY
Vous pouvez utiliser la conduite ()
The pipe() function shall create a pipe and place two file descriptors, one each into the arguments fildes[0] and fildes[1], that refer to the open file descriptions for the read and write ends of the pipe. Their integer values shall be the two lowest available at the time of the pipe() call. The O_NONBLOCK and FD_CLOEXEC flags shall be clear on both file descriptors. (The fcntl() function can be used to set both these flags.)
Oui, il est possible. Vous pouvez transférer vos données à votre autre application via le mécanisme :
- En fonction de votre système d'exploitation, vous avez différentes options ici. Vous pouvez créer une pipe, comme d'autres l'ont mentionné ici, autant de systèmes d'exploitation ont des tuyaux.
- Vous pouvez également utiliser la mémoire partagée.
- vous pouvez simplement l'écrire dans un fichier, puis ouvrez ce fichier dans l'autre application.
- De nombreux systèmes d'exploitation ont d'autres techniques que vous pouvez utiliser.
EDIT: listes MSDN tous les mécanismes IPC disponibles pour Windows