fopen、open、popen

1.fopen       ——FILE* fopen(const char* path,const char* mode)

打开普通文件

带缓冲区

缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据

返回值: fopen()文件顺利打开后,返回指向该流的文件指针,如果打开文件失败,则返回NULL,并将错误代码存在errno中

2.open      ——int open(const char* pathname,int flags)

——int open(const char* pathname,int flags,mode_t mode)

打开设备文件

不带缓冲区

非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件。但效率高、速度快

返回值:打开成功返回0,打开失败返回-1

3.popen     ——FILE* popen(const char* command,const char* type)

打开管道

返回值:标准I/O流,必须由 pclose 来终止 ——int pclose ( FILE* stream );

如果调用 fork() 或 pipe() 失败,或者不能分配内存将返回NULL,否则返回标准 I/O 流。

popen 没有为内存分配失败设置 errno 值,如果调用 fork() 或 pipe() 时出现错误,errno 被设为相应的错误类型。如果 type 参数不合法,errno将返回EINVAL。

popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。

command 参数是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用-c 标志,shell 将执行这个命令。

type 参数只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 "r" 则文件指针连接到 command 的标准输出;如果 type 是 "w" 则文件指针连接到 command 的标准输入。

时间: 2024-10-08 10:30:05

fopen、open、popen的相关文章

FILE文件流的中fopen、fread、fseek、fclose的使用

FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满足编程中的需要.以下分别进行说明,还有他们使用时的注意事项 fopen 函数原型    FILE * fopen(const char *path,cost char *mode) 作用:打开一个文件,返回指向该文件的指针 参数说明:第一个参数为欲打开文件的文件路径及文件名,第二个参数表示对文件的打

nginx+fastcgi php 使用file_get_contents、curl、fopen读取localhost本站点.php异常的情况

原文:http://www.oicto.com/nginx_fastcgi_php_file_get_contents/ 参考:http://os.51cto.com/art/201408/449205.htm 这两天一直在搞windows下nginx+fastcgi的file_get_contents请求.我想,很多同学都遇到当file_get_contents请求外网的http/https的php文件时毫无压力,比如echo file_get_contents(‘http://www.bai

python基础--接口与归一化设计、封装、异常、网络编程

1 接口与归一化设计 1.1 归一化概念: 归一化的好处: 1.归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大降低了使用者的使用难度. 2.归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合 继承的两种用途 一:继承基类的方法,并且做出自己改变或者扩展(代码重用):实践中,继承的这种用途意义并不很大,甚至常常是有害的.因为它使得子类与基类出现强耦合. 二:声明某个子类兼容于某基类,定义一个接口类(模仿java的Interface),接口类中

php获取Alexa网站排名、流量、访问量、页面浏览量代码函数分享

alexa介绍 Alexa的网站世界排名主要分两种:综合排名和分类排名. 综合排名也叫绝对排名,即特定的一个网站在所有网站中的名次.Alexa每三个月公布一次新的网站综合排名.此排名的依据是用户链接数(Users Reach)和页面浏览数(Page Views)三个月累积的几何平均值. 分类排名,一是按主题分类,比如新闻.娱乐.购物等,Alexa给出某个特定网站在同一类网站中的名次.二是按语言分类,目前共分20种语言,比如英文网站.中文网站[Chinese (simpl) 和Chinese (t

【C语言天天练(十七)】字符/字符串输出函数fputc、fputs、putc、putchar和puts

#include <stdio.h> int fputc(int c, FILE *stream); int fputs(const char *s, FILE *stream); int putc(int c, FILE *stream); int putchar(int c); int puts(const char *s); fputc()写一个字符c,强制转换成一个unsigned char类型字符,到文件stream. fputs()写一个字符串到stream,省略字符串尾部的'\0

【C语言天天练(十三)】printf、fprintf、sprintf和snprintf函数

#include <stdio.h> int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); printf是标准的输出函数. fprintf传送格式化输

OpenGL中的深度、深度缓存、深度测试及保存成图片

1.深度 所谓深度,就是在openGL坐标系中,像素点Z坐标距离摄像机的距离.摄像机可能放在坐标系的任何位置,那么,就不能简单的说Z数值越大或越小,就是越靠近摄像机. 2.深度缓冲区 深度缓冲区原理就是把一个距离观察平面(近裁剪面)的深度值(或距离)与窗口中的每个像素相关联.      首先,使用glClear(GL_DEPTH_BUFFER_BIT),把所有像素的深度值设置为最大值(一般是远裁剪面).      然后,在场景中以任意次序绘制所有物体.硬件或者软件所执行的图形计算把每一个绘制表面

python中的进程、线程(threading、multiprocessing、Queue、subprocess)

Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等. 每次执行程序的时候,都会完成一定的功能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要一个专

python开发学习-day07(面向对象之多态、类的方法、反射、新式类and旧式类、socket编程)

s12-20160227-day07 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin