Программа на 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 ответ

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

Ответ Эрика решил эту проблему.

Другие вопросы по тегам