C programımda geçici bir dosya oluşturmalı, ona biraz veri yazmalı ve sonra oluşturduğum dosya üzerinde işlem yapmak için harici bir komutu (exec veya system aracılığıyla) çağırmalıyım. Harici komutu yazmam, ne de onu programıma entegre etmem mümkün olmadı, bu yüzden onunla zaten açık bir açıklayıcıyı paylaşabileceğimi düşünmüyorum. Bu nedenle, oluşturulan geçici dosyanın adını bilmem gerekiyor.Geçici bir dosyayı nasıl açabilirim ve dosya adını nasıl alabilirim?
Tempname() işlevi bunu yapar, ancak maalesef adı alma ve dosyayı açma arasındaki olası bir yarış durumu ve önerilen işlevlerin hiçbiri (tmpfile ve mkstemp) arasında kendini kullanmamanızı önerir.) oluşturulan dosyanın gerçek adını bulmak için bir yol sağlar.
#include <stdlib.h>
#include <stdio.h>
int main()
{
char fn[] = "/tmp/fileXXXXXX";
int fd = mkstemp(fn);
char cmd[200];
int n = snprintf(cmd, sizeof(cmd), "ls -l %s\n", fn);
printf("snprintf=>%d\n sizeof(fn)=%d\n", n, sizeof(fn)); // extra info, see comments
printf("%s\n", cmd);
return system(cmd);
}
mkstemp
geçmek tamponu içinde dosya adı şablonu yerini alacak:
'mkstemp', adı döndürür; X'in gerçek değerlerle değiştirilmesiyle iletilen şablon argümanını (char *, const char * değil) değiştirecektir. – Joe