How to perform open system call in linux only if file exists and only if file doesn't exists?
我现在正在学习Linux系统调用,我遇到了
仅当文件存在时如何打开文件(例如写入)?这意味着在这种情况下,如果文件不存在,我应该无法打开它。
仅当文件不存在时如何打开文件(例如写入)?这意味着在这种情况下我应该无法打开文件,如果它存在的话。这类似于我猜想创建一个文件,但我只想创建它并打开它以进行写入,如果文件已经存在,我不想打开它。
那么你能给我完整的
谢谢
注意:另外请简要解释您的答案,我确实了解了不同的选项标志,如
在第一种情况下,只需使用
在第二种情况下,您使用
您可以使用 stat 系统调用来确定文件是否存在。然后,如果它存在,您可以打开带有标志的文件,O_WRONLY.
如果您在上面的#1 中发现该文件不存在,您可以使用标志打开它,O_WRONLY | O_CREAT。由于您已经确保该文件不存在,因此不需要 O_EXCL。
您可以通过使用 stat 系统调用跳过检查并使用 O_WRONLY | 打开文件来组合 #1 和 #2 O_CREAT。如果文件已经存在,它将被用于写入#1。如果它不存在,它将被创建并用于写入#2。