微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用O_CREAT O_WRONLY:如何获取文件中的当前位置并在末尾附加数据?

如何解决使用O_CREAT O_WRONLY:如何获取文件中的当前位置并在末尾附加数据?

我想从套接字读取数据到 FILE 。如果 FILE 不存在,请创建文件 ONCE 和来自客户端的所有后续数据,找到 FILE POINTER 的当前位置并追加最后的数据。

现在,每次我运行代码时都会创建一个文件

// Server is 'Ready' to read data from the socket :

// fd - declared as **static int**,to enable it bet'n the function calls


            fd = open("/home/regs_p/cprograms/tcp/RSA.c",O_WRONLY | O_APPEND | O_CREAT | O_Trunc);

              if (fd < 0) {

                printf("Some problem with the file!");

              }

            else {
            
                while ((b = read(sockfd,buffer,sizeof(buffer) - 1)) > 0) {

                    if (fd > 0 ) {

                        fp = fdopen(fd,"a+");

                        fwrite(buffer,sizeof(buffer),1,fp);

                    //  fseek(fp,SEEK_CUR);

                    }   

                    size = ftell(fp);
            
                }

            //  printf("Buffer = %s",buffer);

            }

解决方法

仅将O_APPENDO_CREAT一起使用才创建文件。如果存在,默认情况下将打开文件,并且文件指针将位于末尾。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。