fopen()实例: fopen(文件名, 使用文件的方式)
FILE *fp;
if((fp = fopen("file", "w")) == NULL) //
fopen()的返回值是一个指针
file为文件名 w:写 r:读 a:追加
printf("cannot open file !");
exit(0);
在最后不要忘记关闭fp:
fclose
(fp);要养成好的习惯
open()实例: open(const char *pathname, 打开的操作类型)
char string[] = "i love my mother !"
if((fd = open("file.c", O_CREAT | O_TEXT)) ==
-1
) //
open()的返回值是int型
‘ |’ 为‘或’
printf("cannot open file.c !");
exit(0);
write(fd, handle, string, strlen(string));
1) O_RDONLY 只读打开
2) O_WRONLY 只写打开
3) O_RDWR 读、写打开
4) O_APPEND 每次写时都加到文件的尾端
5) O_CREAT 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数mode,用其说明该新文件的存取许可权位。
6) O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。
7) O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。
8) O_NOCTTY 如果p a t h n a m e指的是终端设备,则不将此设备分配作为此进程的控制终端。
9) O_NONBLOCK 如果p a t h n a m e指的是一个F I F O、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I / O操作设置非阻塞方式。
10)O_SYNC 使每次w r i t e都等到物理I / O操作完成。
在最后不要忘记关闭fd :
close
(fd);要养成好的习惯
fopen(),open():打开一个文件用于读或写fopen()函数经常被我们使用 fopen()实例: fopen(文件名, 使用文件的方式)FILE *fp;if((fp = fopen("file", "w")) == NULL) //fopen()的返回值是一个指针 file为文件名 w:写 r:读 a:追加 { print
1.来源:
open
是UNIX系统调用
函数
(包括LINUX等),返回的是文件描述符(
File
Descriptor),它是文件在文件描述符表里的索引。
fopen
是ANSIC标准中的
C语言
库
函数
,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。
2.文件IO层次
如果从文件IO的角度来看,前者属于低级IO
函数
,后者属于高级IO
函数
。低级和高级的简单区分标准是:谁离系统内核更...
【基本概念】
阻塞操作是指在执行设备操作时,托不能获得资源,则挂起进程直到满足操作所需的条件后再进行操作。被挂起的进程进入休眠状态(不占用cpu资源),从调度器的运行队列转移到等待队列,直到条件满足。
2、
非阻塞
非阻塞
操作是指在进行设备操作是,若操作条件不满足并不会挂起,而是直接返回或重新查询(一直占用CPU资源)直到操作条件满足为止。
当用户空间的应用...
在项目中使用了
fopen
函数
阻塞现象,而且阻塞的时间很长(大概二十分钟)
函数
原型:
FILE
*
fopen
(const char * path, const char * mode);
fopen
出现问题分析:
1 、参数path问题, 路径不对
fopen
就会是返回失败。
2、 参数mode问题,mode控制文件打开的
方式
,如果用户打开的
方式
超出了当前用户的权限,那么
fopen
也会返回失...
C语言
命名管道
open
阻塞的原因与解决方法
open
()的第一个参数是文件路径,第二个参数是打开的文件的读写
方式
(只写,只读,读写)与堵塞/非堵塞设置。
由于
open
函数
的第二个参数如果加上O_NONBLOCK非堵塞,则会在执行
open
的时候立即返回,若出错则会设置errno。本话题旨在解决不设置O_NONBLOCK非堵塞时出现的堵塞情况分析。
查阅博客资料,发现有关读写打开的堵塞在此不再赘述,请...
遇到一个问题,刚好这位博主有总结,转一下 原文:https://blog.csdn.net/men_wen/article/details/59158365
关于有名管道
open
时阻塞的问题
1. 发现错误
在学习Unix网络编程卷二的有名管道FIFO时,无意间犯下一个错误,故写此总结。
在写FIFO的服务器和客户端之间通信的代码时,服务器端主
函数
创建两个有名管道,然后分被以读写打开两个...
非阻塞
I/O使我们的操作要么成功,要么立即返回错误,不被阻塞。
对于一个给定的描述符两种方法对其指定
非阻塞
I/O:
(1)调用
open
获得描述符,并指定O_NONBLOCK标志
(2)对已经打开的文件描述符,调用fcntl,打开O_NONBLOCK文件状态标志。
flags = fcntl( s, F_GETFL, 0 ) )
fcntl( s, F_SETFL, flags | O_NONBLOCK )
`
fopen
` 和 `
open
` 都是用于打开文件的
函数
,但是它们有一些不同之处:
1. `
fopen
` 是 C 标准库提供的
函数
,而 `
open
` 是 POSIX 标准提供的
函数
。因此,`
fopen
` 可以在任何支持 C 标准库的平台上使用,而 `
open
` 则可以在符合 POSIX 标准的平台上使用。
2. `
fopen
`
函数
返回一个 `
FILE
*` 类型的指针,可以通过该指针来操作文件。而 `
open
`
函数
返回一个整数类型的文件描述符(
file
descriptor),可以通过该文件描述符来操作文件。
3. `
fopen
`
函数
提供了一些高级的文件操作
函数
,例如 `fwrite`、`fread`、`
fp
rintf` 等,可以更方便地进行文件的读写操作。而 `
open
`
函数
则需要使用低级的系统调用
函数
(如 `write`、`read`)来进行文件读写。
4. `
fopen
`
函数
在打开文件时采用了一些默认的选项,例如以文本模式或二进制模式打开文件、自动进行缓冲等。而 `
open
`
函数
需要手动设置选项,例如打开文件时指定读写模式、权限等。
综上所述,如果您使用 C 语言进行文件操作,可以选择使用 `
fopen
`
函数
;如果您需要更底层的文件操作或者在符合 POSIX 标准的平台上进行文件操作,可以选择使用 `
open
`
函数
。