社区
C语言
帖子详情
在windows下面用open操作文件描述符
arden1019
2007-01-18 03:29:25
有一个linux下的库要迁到windows。
其中使用了open(const char *,int,...) 来得到文件描述符。从来没有在windows下用过fd,请哪位大大告知一下,windows支持fd么?需要include那个头文件?
多谢。
...全文
1164
17
打赏
收藏
在windows下面用open操作文件描述符
有一个linux下的库要迁到windows。 其中使用了open(const char *,int,...) 来得到文件描述符。从来没有在windows下用过fd,请哪位大大告知一下,windows支持fd么?需要include那个头文件? 多谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 }
C语言unistd.h
C语言unistd.h
文件描述符
文件描述符
是一个非负整数,它是
操作
系统内核用来标识和管理打开的文件、设备、管道等资源的索引。每个进程都有一个
文件描述符
表,用于跟踪进程打开的文件和资源。当进程打开一个文件或设备时,内核会为该文件或设备分配一个
文件描述符
,并返回该
文件描述符
给进程。
文件描述符
的接口提供了一组系统调用,允许进程对文件和其他资源进行读取、写入、关闭等
操作
。通过
文件描述符
,进程可以使用统一的接口对不同类型的资源进行
操作
,使得它们看上去像字节流。这种抽象化的设计让程序员可以更方便地处理不同类型的数据流,而不用关心底层资源的细节。
怎样查看计算机
文件描述符
,[wiki]
文件描述符
(File Description)
概要
文件描述符
在形式上是一个非负整数。实际上,它是一个索引值,指向为每一个所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个
文件描述符
.在中,一些涉及底层的程序编写往往会围绕着
文件描述符
展开。但是
文件描述符
这一概念往往只适用于、这样的
操作
系统。优点
文件描述符
的优点主要有两个:基于
文件描述符
的兼容标准。在UNIX、Linux的系统调用中,大量的系统调用都是...
详解 win32 的 文件句柄 和 linux 的
文件描述符
区别与联系
Windows
(win32) 文件句柄:文件句柄(File Handle)是
Windows
操作
系统用于表示文件资源的抽象。每一个文件、设备、管道等系统资源在打开后会获得一个唯一的句柄,作为进程访问该资源的标识。Linux
文件描述符
:
文件描述符
(File Descriptor)是 Linux
操作
系统内核用来标识和管理文件资源的整型标识符。
文件描述符
不仅用于文件,还可以表示其他资源(如套接字、管道等),在 Linux 中,
文件描述符
是非常基础的资源抽象概念。特性
Windows
文件句柄。
文件描述符
以及修改
文件描述符
的标志位是
操作
系统中用于描述
文件描述符
属性和行为的一组二进制标志。
文件描述符
是一个非负整数,它是
操作
系统内核为了管理已打开的文件而分配给每个进程的索引值。标志位则提供了关于
文件描述符
的额外信息,例如文件的打开模式、访问权限、特殊行为等。在
Windows
系统中,虽然没有完全与 Linux 相同的
文件描述符
概念,但有类似的文件句柄机制。函数将新的标志位设置回
文件描述符
,最后关闭
文件描述符
。在 Linux 系统中,
文件描述符
的标志位可以通过。在这个示例中,首先以读写模式打开一个文件,然后使用。
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章