C freopen()导致分段错误

时间:2018-03-15 19:35:26

标签: c sigsegv freopen

我有C程序的一部分:

    char buf[256];
    fprintf(stderr, "buf created. going to freopen. Path:\n");
    fprintf(stderr, path);
    fprintf(stderr, "\n");

    if (!freopen(path, "a", stderr)) {
        fprintf(stderr, "if entered\n");
        fprintf(stderr, "Can't redirect stderr\n");
        sprintf(buf, "Server can't open log file (%s)", path);
        fprintf(stderr, "sprintf ok. going to send_message\n");
        send_message(buf, config.maintenance_delay);
        fprintf(stderr, "send_message ok\n");
        exit(1);
    }
    fprintf(stderr, "ndef USING_FCGI, ended\n");

它的输出是:

buf created. going to freopen. Path:
../log_andrewwhynot/scheduler.log
Segmentation fault

所以,我认为问题出在freopen()函数中,但我无法弄清楚它有什么问题。我已经仔细检查了文件的路径(它存在,一切都没有访问权限)甚至尝试硬编码绝对路径或使用路径到另一个文件,但一切都是徒劳的。然后,我尝试打开文件进行写操作而不是追加,但它也没有帮助。那么,可能出现什么问题?为什么调用导致SIGSEGV?

谢谢!

架构:arm64

操作系统:每周一次的armbian 5.41.180312

gcc版本 :( Ubuntu GLIBC 2.23-0ubuntu10)2.23

0 个答案:

没有答案