簡體   English   中英

C 程序只能在給定絕對路徑時寫入文件,在給定相對路徑時不能寫入

[英]C program can only write to file when given absolute path and cant when given relative path

我在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);
    }
}

相對路徑的基礎不是程序所在的目錄,而是執行程序的進程的工作目錄,一般是執行程序的命令行shell的工作目錄

埃里克的回答解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM