【问题标题】:C program can only write to file when given absolute path and cant when given relative pathC程序只能在给定绝对路径时写入文件,而在给定相对路径时不能写入
【发布时间】: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的工作目录,
  • 相对于.......什么的路径?某些“当前目录”可能在您认为的位置,也可能不在?

标签: c linux write


【解决方案1】:

相对路径的基础不是程序所在的目录,而是 执行程序的进程的工作目录,通常是 用于执行程序的命令行 shell 的工作目录

埃里克的回答解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2011-05-09
    • 2018-09-30
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多