在内置的蟒蛇开放的功能,是个什么模式之间准确的区别w,a,w+,a+,和r+?
特别是,文档暗示所有这些都允许写入文件,并说它打开文件"具体"附加",写入"和"更新",但没有定义这些术语的含义.
我使用mkfifo来创建一个命名管道.然后我使用以下程序打开它.但是,该程序挂起在"fopen"行.这里有什么问题吗?
int main(int argc, char** argv) {
char* line = "hello, world!";
FILE* fp = fopen("/tmp/myFIFO", "rw");
fprintf(fp, line);
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 如果我打开(比方说)二进制文件,并且我想追加它的结尾,以下两种方式似乎对我有效
fileVar = fopen("FileName", "w+b");
Run Code Online (Sandbox Code Playgroud)
和
fileVar = fopen("FileName", "r+b");
Run Code Online (Sandbox Code Playgroud)
我已阅读文档,但我不清楚这两种打开文件的方法之间的区别.该网站表示w+如果文件已经存在,将覆盖该文件,a+并将附加到文件的末尾.我没有尝试使用a+,但它似乎做同样的事情r+.
问:到底什么是打开一个文件,对三种方法之间的差异r+,w+以及a+?