![](/img/trans.png)
[英]How to get the absolute path for a given relative path programmatically in Linux?
[英]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.