mkstemp不是让你知道临时文件名是不正确的,尝试编译并执行这个程序来看你自己:
#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);
}
Run Code Online (Sandbox Code Playgroud)
mkstemp 将使用实际文件名替换传递给它的缓冲区中的文件名模板,稍后您可以使用此缓冲区执行任何操作.