看来我完全在滥用mkstemp。但是我使用它,总是会遇到段错误。我使用编译了以下最基本的程序,gcc -ggdb -Wall -Werror main.c并使用./a.out
#include <stdlib.h>
int main(int argc, char **argv) {
mkstemp("XXXXXX");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这始终返回返回码139,并[1] 23532 segmentation fault ./a.out在终端上打印。(23532因为它是pid,所以总是会更改)。
我试过了:
gcc(完全没有,以前标志的很多组合-Wextra和-O0)int,休眠5秒钟,然后再次关闭文件描述符。但是我什至还没睡到开始...现在我没主意了...
从手册页:
的最后六个字符
template必须为,"XXXXXX"并将这些替换为使文件名唯一的字符串。由于将被修改,template因此不能为字符串常量,而应声明为字符数组。
因此,您需要声明一个字符数组:
char filename[] = "fileXXXXXX";
mkstemp(filename);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |