C fopen () не может открыть файл в / tmp - PullRequest
0 голосов
/ 10 декабря 2018

Я следую базовому учебнику по программированию на C на tutorialspoint.com

У меня есть следующая программа, которая генерирует файл в / tmp с именем test.txt:

#include <stdio.h>

int main() {

    FILE *fp;

    fp = fopen("/tmp/test.text", "w+");
    fprintf(fp, "This is testing for fprintf...\n");
    fputs("This is testing for fputs...\n", fp);
    fclose(fp);

    return 0;

}

Тогда у меня естьвторая программа, которая просто пытается открыть этот файл для чтения:

#include <stdio.h>
#include <string.h>
#include <errno.h>

int main() {

   FILE *fp = NULL;

   fp = fopen("/tmp/test.txt", "r");

   if (fp == NULL) {
        printf("NULL!!!\n");
   }

   printf("%s\n", strerror(errno));

   fclose(fp);

   return 0;

}

Однако, когда я пытаюсь запустить программу, открывающую файл, я получаю следующий вывод:

NULL!!!
No such file or directory
Segmentation fault

Если я изменю код, чтобы он указывал на тот же файл в моем домашнем каталоге, он будет работать правильно.Кажется, что по какой-то причине я не могу открыть файлы в каталоге / tmp (через fopen) ... И, чтобы прояснить ситуацию, я могу изменить / tmp и отследить содержимое test.txtфайл просто отлично.Разрешения на этом тоже выглядят нормально, 664 с моим пользователем как владельцем и группой.

Единственная другая особенность, которую я могу придумать, которая может иметь отношение к моей системе, это то, что я нахожусь на Elementary OS Juno,Я использую g ++ 7.3.0 (clang также дает тот же результат), и у меня есть отдельные зашифрованные разделы для моей операционной системы root и home ...

Есть мысли о том, что может быть причиной этого?

1 Ответ

0 голосов
/ 10 декабря 2018

Это было просто вызвано неправильным расширением файла, .txt против текста, на что указывает @ yano

...