Программа на C может записывать в файл только при указании абсолютного пути и не может записывать данные в файл при указании относительного пути
Используя linux-mint. В этом простом коде я пытаюсь записать в файл с именем "input.txt", который находится в том же каталоге, что и этот скрипт. Когда я указываю относительный путь, т.е. только "input.txt" в качестве пути к файл, в файл ничего не записывается, но когда я указываю абсолютный путь, программа работает, и "hello world" записывается в "input.txt". Я не понимаю в чем разница
#include <zconf.h>
#include <fcntl.h>
#include <sys/wait.h>
int main() {
close(1);
open("/home/maor/CLionProjects/untitled2/input.txt", O_RDWR );
if (fork() == 0) {
int fd = dup(1);
write(fd, "hello ", 6);
} else {
wait(0);
write(1, "world\n ", 6);
}
}
1 ответ
Основой для относительных путей является не каталог, в котором находится программа, а рабочий каталог процесса, выполняющего программу, который обычно является рабочим каталогом оболочки командной строки, используемой для выполнения программы.
Ответ Эрика решил эту проблему.