标记O_CREAT不创建文件

时间:2019-02-23 09:37:06

标签: c

我有一个试图创建文件并写入文件的程序,但是由于某些原因,当我使用O_CREAT标志时会出现错误

  

没有这样的文件或目录

代码中产生错误的部分:

(char *) datafile = malloc(30);
strcpy(datafile, "~/Desktop/notes");
fd =  open(datafile, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR); <----- here I get the error

1 个答案:

答案 0 :(得分:6)

"~/Desktop/notes"

其中没有名为~的目录。某些程序(最著名的外壳,例如bash)将~扩展到当前用户的主目录,但是open不是外壳程序,因此不会这样做。

如果您需要相对于主目录的路径,则可以执行以下操作:

char* home = getenv("HOME");
if (home) {
     strcpy(datafile, home);
     strcat(datafile, "/Desktop/notes");
     ...
} else {
    ... report an error
}