首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用相同的模式和标志来fdopen as open?

如何使用相同的模式和标志来fdopen as open?
EN

Stack Overflow用户
提问于 2013-02-27 19:13:07
回答 3查看 20.5K关注 0票数 5

我希望有一个使用fprintfFILE*类型。我需要使用fdopen来获取FILE*,而不是返回intopen。但是我们能用fdopenopen做同样的事情吗?(我从未使用过fdopen)

我想做一个fdopen,它的作用与以下相同:

代码语言:javascript
复制
open("my_file", 0_CREAT | O_RDWR | O_TRUNC, 0644);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-27 19:16:31

fdopen接受一个文件描述符,该文件描述符以前可能由open返回,所以这不是问题。

只需对获取描述符的文件执行open操作,然后对该描述符执行fdopen操作。

fdopen只需创建一个用户空间缓冲的流,接受任何类型的支持readwrite操作的描述符。

票数 9
EN

Stack Overflow用户

发布于 2013-02-27 19:15:34

fdopen()使用文件描述符指向文件指针:

fdopen()函数将流与文件描述符相关联。文件描述符是从open()dup()creat()pipe()获得的,它们打开文件但不返回指向FILE结构流的指针。流是几乎所有stdio库例程的必要输入。

代码语言:javascript
复制
FILE* fp = fdopen(fd, "w");

当您想要使用fprintf()时,此示例代码可能会对您有更多帮助

代码语言:javascript
复制
int main(){
 int fd;
 FILE *fp;
 fd = open("my_file",O_WRONLY | O_CREAT | O_TRUNC);
  if(fd<0){
    printf("open call fail");
    return -1;
 }
 fp=fdopen(fd,"w");
 fprintf(fp,"we got file pointer fp bu using File descriptor fd");
 fclose(fp);
 return 0;
}

通知:

  • 流的模式必须与文件描述符的模式兼容。
  • 当通过fclose()关闭流时,fd也会关闭。参考:The fclose() function performs a close() on the file descriptor that is associated with the stream pointed to by stream.
票数 8
EN

Stack Overflow用户

发布于 2013-02-27 19:18:48

如果您以前没有为您的文件获取文件描述符,那么可以使用fopen

代码语言:javascript
复制
FILE* file = fopen("pathtoyourfile", "w+");

考虑一下,fopen使用的是标准库调用,而不是系统调用(打开)。因此,您没有太多的选项(比如指定访问控制值)。

请参阅man-page

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15110642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档