linux open fopen popen函数区别

open 函数(打开一个文件)

与 read, write 等配合使用
1.1包含头文件
#include
#include
#include

1.2函数原型
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

open函数返回一个文件描述符,一个小的非负整数,后面操作这个文件时就用这个文件描述符。

1.3函数参数讲解
int open(const char *pathname, int flags);

const char *pathname :路径名,是一个字符串
int flags:
O_RDONLY   1 只读打开
O_WRONLY   2 只写打开
O_RDWR    4 读写打开

如果open打开一个文件的时候,没有该文件,那么应该使用一下函数
int open(const char *pathname, int flags, mode_t mode);

示例
open("./file",O_RDWR|O_CREAT,0600);
如果没有file文件,加上(|O_CREAT),创建文件,并且给文件权限,第三个参数就是权限,这里我们系=写0600,为可读可写。

完整代码如下:

#include 
#include 
#include 
#include 
#include 


int main()
{
        int fd;//文件描述符,int类型
        fd = open("./file",O_RDWR);

        if(fd = -1) //文件创建成功,返回非负整数
        {
                perror("why:");//打印出错原因
                fd = open("./file",O_RDWR|O_CREAT,0600);//如果没有该文件,创建文件并且权限为0600(可读可写);
                if(fd > 0)
                {
                        printf("file creat successful,fd=%d \n",fd);
                }
        }

        return 0;
}

linux open fopen popen函数区别_第1张图片

这样就创建了一个文件,并且权限为可读可写。

fopen函数

与 fread, fwrite等配合使用。
1.1包含头文件
include

1.2函数原型
FILE *fopen(const char *pathname, const char *mode);
fopen函数返回一个文件指针。

1.3函数参数讲解
filename :文件名称
mode 打开模式:
r   只读方式打开一个文本文件
w   只写方式打开一个文本文件
r+   可读可写方式打开一个文本文件
w+   可读可写方式创建一个文本文件
这几个为常用参数

popen函数(与system函数类似)

popen函数可以获取系统指令执行的输出结果。
system函数直接在终端执行指令 ,数据会流失。

函数原型

FILE *popen(const char *command, const char *type);
参数const char *command要使用的命令
参数type可使用“r”代表读取,“w”代表写入。

#include 


int main()
{
        char ret[1024] = {'\0'};
        FILE *fp;
        int n_read=0;
        fp = popen("ps","r");
        n_read = fread(ret,1,1024,fp);
        printf("n_read = %d ret =\n %s \n",n_read,ret);

        return 0;
}

popen函数会将指令执行结果会流到 popen函数开辟的管道fp里面去,后面就可以用fread,fwrite函数对执行结果进行操作。

你可能感兴趣的:(linux,c,linux,ubuntu,c语言)