【发布时间】:2018-02-06 17:11:04
【问题描述】:
看来我完全误用了mkstemp。但是我使用它,我总是得到一个段错误。我用gcc -ggdb -Wall -Werror main.c编译了下面最基本的程序并用./a.out运行它
#include <stdlib.h>
int main(int argc, char **argv) {
mkstemp("XXXXXX");
return 0;
}
这总是返回返回码 139 并在终端上打印 [1] 23532 segmentation fault ./a.out。 (23532 总是改变,因为它是 pid)。
我试过了:
- 切换
gcc的flags(完全没有,很多以前的flags的组合,-Wextra和-O0) - 通过将生成的文件描述符保存在
int中来更改代码,休眠 5 秒并再次关闭文件描述符。但我什至还没开始入睡……
现在我没有想法了......
【问题讨论】:
-
贴出的代码,除了
mkstemp()的参数无效外,还要检查(!=NULL))返回值以确保操作成功。