Я следую базовому учебнику по программированию на 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 ...
Есть мысли о том, что может быть причиной этого?