C程序只能在给定绝对路径时写入文件,而在给定相对路径时不能写入
Posted
技术标签:
【中文标题】C程序只能在给定绝对路径时写入文件,而在给定相对路径时不能写入【英文标题】:C program can only write to file when given absolute path and cant when given relative path 【发布时间】:2020-10-03 20:05:03 【问题描述】:使用 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的工作目录, 相对于.......什么的路径?某些“当前目录”可能在您认为的位置,也可能不在? 【参考方案1】:相对路径的基础不是程序所在的目录,而是 执行程序的进程的工作目录,通常是 用于执行程序的命令行 shell 的工作目录
埃里克的回答解决了这个问题。
【讨论】:
以上是关于C程序只能在给定绝对路径时写入文件,而在给定相对路径时不能写入的主要内容,如果未能解决你的问题,请参考以下文章
C# 中是不是存在一种方法来获取给定两个绝对路径输入的相对路径? [复制]
给定相对路径时,如何让 MSBUILD 评估和打印完整路径?