社区
C语言
帖子详情
在windows下面用open操作文件描述符
arden1019
2007-01-18 03:29:25
有一个linux下的库要迁到windows。
其中使用了open(const char *,int,...) 来得到文件描述符。从来没有在windows下用过fd,请哪位大大告知一下,windows支持fd么?需要include那个头文件?
多谢。
...全文
1058
17
打赏
收藏
在windows下面用open操作文件描述符
有一个linux下的库要迁到windows。 其中使用了open(const char *,int,...) 来得到文件描述符。从来没有在windows下用过fd,请哪位大大告知一下,windows支持fd么?需要include那个头文件? 多谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
htqx
2007-02-19
打赏
举报
回复
POSIX API 在vista里面不是取消了么。
windows还是用winapi吧。
iambic
2007-02-19
打赏
举报
回复
可以用MinGW,这些基本的IO操作支持得还是不错的。
prozilla
2007-02-18
打赏
举报
回复
<io.h>
doubhor
2007-01-31
打赏
举报
回复
windows下面操作文件有两种思路:
一。使用fopen, fclose, fseek, fread, fwrite, fseek等C标准函数
二。使用CreateFile,ReadFile,WriteFile等API函数
arden1019
2007-01-31
打赏
举报
回复
在VC下面写下面c程序,当不设置NODEFAULTLIB,也就是说使用编译器的默认库时,可以编译工作也正常。
我想 open write read 等....还是在某个默认库里有定义的,只是不知道那一个~
int main(void)
{
int fd;
char *buf="something to write";
fd=open("c:\\1.txt",1);
if (fd)
{
write(fd,buf,strlen(buf)+1);
}
close(fd);
return 0;
}
jixingzhong
2007-01-23
打赏
举报
回复
int fread(void *ptr,int size,int nitems,FILE *stream) 从流stream中读入nitems
个长度为size的字符串存入ptr中
int fwrite(void *ptr,int size,int nitems,FILE *stream) 向流stream中写入nitems
个长度为size的字符串,字符串在ptr中
注意 open read write 使用的是一个 文件 handle ,
而 fopen fread fwrite 使用的是一个 文件结构体指针 FILE *。
(包含 stdio.h 即可)
jixingzhong
2007-01-23
打赏
举报
回复
1
FILE *fopen(char *filename,char *type) 打开一个文件filename,打开方式为type,
并返回这个文件指针,type可为以下字符串加上后缀
┌──┬────┬───────┬────────┐
│type│读写性 │文本/2进制文件│建新/打开旧文件 │
├──┼────┼───────┼────────┤
│r │读 │文本 │打开旧的文件 │
│w │写 │文本 │建新文件 │
│a │添加 │文本 │有就打开无则建新│
│r+ │读/写 │不限制 │打开 │
│w+ │读/写 │不限制 │建新文件 │
│a+ │读/添加 │不限制 │有就打开无则建新│
└──┴────┴───────┴────────┘
可加的后缀为t、b。加b表示文件以二进制形式进行操作,t没必要使用
例: ┌──────────────────┐
│#include<stdio.h> │
│main() │
│{ │
│ FILE *fp; │
│ fp=fopen("C:\\WPS\\WPS.EXE","r+b");│
└──────────────────┘
比较:
int open(char *pathname,int access[,int permiss])为读或写打开一个文件,
按后按access来确定是读文件还是写文件,access值见下表
┌────┬────────────────────┐
│access值│意义 │
├────┼────────────────────┤
│O_RDONLY│读文件 │
│O_WRONLY│写文件 │
│O_RDWR │即读也写 │
│O_NDELAY│没有使用;对UNIX系统兼容 │
│O_APPEND│即读也写,但每次写总是在文件尾添加 │
│O_CREAT │若文件存在,此标志无用;若不存在,建新文件 │
│O_TRUNC │若文件存在,则长度被截为0,属性不变 │
│O_EXCL │未用;对UNIX系统兼容 │
│O_BINARY│此标志可显示地给出以二进制方式打开文件 │
│O_TEXT │此标志可用于显示地给出以文本方式打开文件│
└────┴────────────────────┘
jixingzhong
2007-01-23
打赏
举报
回复
是的, open read write 都不是标准库中的内容。
请使用 fopen fread fwrite
arden1019
2007-01-23
打赏
举报
回复
没人理了 :(
arden1019
2007-01-22
打赏
举报
回复
我在我的VC里面怎么用阿?open read write 这些东西不是C标准库里面的吧?我可没有在标准库中找到过...
gangjh
2007-01-20
打赏
举报
回复
我用mingw編譯的.
Wolf0403
2007-01-18
打赏
举报
回复
1楼的程序是 CYGWIN 编译还是 MINGW 编译的?按理说 WINDOWS 支持 POSIX API,但是没见人用过。
pyrophile
2007-01-18
打赏
举报
回复
标准库的东西,一般都能移植的
gangjh
2007-01-18
打赏
举报
回复
如果可能,還是改成fopen比較好.方便移植
dx30611
2007-01-18
打赏
举报
回复
需要stdio
这个函数是标准的函数,各个平台上都通用,如果是windows api就是像ReadFile,与linux上有些概念上的差异
dx30611
2007-01-18
打赏
举报
回复
fopen
gangjh
2007-01-18
打赏
举报
回复
如果你在windows下用gcc,
這里有個範例.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6
7
8 #define BSIZE 200
9 int main(int argc, char *argv[])
10 {
11 int fp, rsize ;
12 char buf[BSIZE] ;
13
14 if ( access(argv[1], F_OK) !=0) {
15 printf("file not exists\n");
16 exit(1) ;
17 }
18
19 fp = open(argv[1], O_RDONLY) ;
20 while ((rsize =read(fp, buf, BSIZE)) >0) {
21 write(fileno(stdout), buf, rsize) ;
22 }
23
24
25 close(fp) ;
26 exit(0) ;
27 }
信创服务器
操作
系统的配置与管理(
Open
Euler版)
信创趋势下,资源围绕网络管理员、网络工程师等岗位对
open
Euler服务器版管理核心技术技能的要求,应用工作过程系统化方法开发了包括统信UOS简介、shell、Bash、目录结构、文件系统、VIM编辑器、用户与组、SSHD远程登录、网络简介、安全策略、软件源、UOS文件权限、UOS磁盘管理、SAMBA服务、DHCP服务、DNS服务、WEB服务、FTP服务、代理服务器、邮件服务器、防火墙、NAT转换等14个项目,场景化的还原企业实际项目和业务流程。每个项目都按企业工作实际分解为若干个工作任务,通过项目背景、项目分析、项目相关知识为子任务做铺垫,任务实施过程中由任务规划、任务实施和任务验证构成,符合工程项目实施的一般规律。 本课程主要学习内容: 1、服务器基础配置:项目1 部署
open
Euler服务器系统项目2 使用shell管理本地文件项目3 管理
open
Euler的用户与组项目4
open
Euler系统的基础配置 2、基础服务部署:项目5 企业内部数据存储与共享项目6 部署企业的DHCP服务项目7 部署企业的DNS服务项目8 部署企业的WEB服务项目9 部署企业的FTP服务 3、高级服务部署:项目10 部署企业squid代理服务器项目11 部署企业的邮件服务器项目12 部署
open
Euler服务器防火墙课程考核:综合项目实训/课程考评
怎样查看计算机
文件描述符
,[wiki]
文件描述符
(File Description)
概要
文件描述符
在形式上是一个非负整数。实际上,它是一个索引值,指向为每一个所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个
文件描述符
.在中,一些涉及底层的程序编写往往会围绕着
文件描述符
展开。但是
文件描述符
这一概念往往只适用于、这样的
操作
系统。优点
文件描述符
的优点主要有两个:基于
文件描述符
的兼容标准。在UNIX、Linux的系统调用中,大量的系统调用都是...
到底什么是
文件描述符
???
文件描述符
1、
文件描述符
的引入1.1 系统调用接口的引入1.2
文件描述符
2、
文件描述符
2.1 演示
文件描述符
2.2
文件描述符
的返回值2.3
文件描述符
底层原理(重点)2.3
文件描述符
修饰规则3、总结 1、
文件描述符
的引入 1.1 系统调用接口的引入 不管是学习语言还是学习
操作
系统,IO流是我们学习过程中不可获取的一个阶段,在这一部分我们会学习打开文件、读写文件等
操作
,在C语言中我们打开文件调用的是C语言的库函数接口,像f
open
打开,fclose关闭,fputs写入,fgets读取,这些都是在C
如何获取打开文件和
文件描述符
数量
当我们在系统或应用的日志中碰到“too many
open
files”错误记录时,这个不是说打开的文件过多,而是打开的
文件描述符
数量已达到了限制,这时就需要增加
文件描述符
的数量限制了。
文件描述符
是一个正整数,用以标明每一个被进程所打开的文件和socket。从上面可看到小于
文件描述符
的数值时即报“Too many
open
files”错误,那么这个应该可以说明这个“Too many
open
files”错误是是打开的
文件描述符
数量已达到了限制所引起的,跟打开的文件数量没有关系。
linux
文件描述符
0 1 2,
文件描述符
内核(kernel)利用
文件描述符
(file descriptor)来访问文件。
文件描述符
是非负整数。打开现存文件或新建文件时,内核会返回一个
文件描述符
。读写文件也需要使用
文件描述符
来指定待读写的文件。中文名
文件描述符
外文名file descriptor作用内核利用
文件描述符
来访问文件形式非负整数
文件描述符
提出前提编辑每一个
文件描述符
会与一个打开文件相对应,同时,不同的
文件描述符
也...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章