嵌入式C编程 文件编写open

creat函数

描述

函数创建一个文件。

实例


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define file_path "/home/hz/c_program/linux/create.txt"

int main(void)
{
	creat(file_path,O_CREAT);
}

文件创建标志和文件状态 全列表

flagdescribe
O_APPEND文件在追加模式打开。在write(2)
O_ASYNC使能信号驱动I/O:生成一个信号
O_CLOEXEC在新的文件描述符,关闭close-on-exec 标志符.指定这个标志,允许程序在设置FD_CLOEXE标识时,附加的fcntl(2) F_SETFD操作
O_CREAT如果路径名不存在,通过常规文件。新文件的user ID设置为进程的user ID。通常通过进程的umask可以修改模式。如果默认ACL缺失,创建的文件模式为(mode & ~umask),常用mode宏有:S_IRWXU(文件拥有者有读、写、执行权限)、S_IRWXG(组成员有读、写、执行权限)、S_IRWXO(其他成员有读、写、执行权限)

open函数

open函数系统调用通过指令路径(pathname)打开文件。如果指定文件不存在,它可选创建通过open(flags被指定为O_CREAT).

描述

open,openat,creat 函数 是打开一个文件

返回值

open函数的返回值是一个文件描述符,一个小的、非负整数,如果返回-1出现错误。打开文件后,就可以被其他系统调用(read(2),write(2),lseek(2),fcntl(2),etc.)所使用。成功调用返回的文件描述符将是当前未为进程打开的编号最低的文件描述符。

默认情况下,新的文件描述符保持打开,是设置通过一个execve函数(i.e.,FD_CLOEXEC文件描述符意思是,在fcntl(2)未能够初始化).

库和原型

GUN的发布c运行库版本:glibc 2.10:_POSIX_C_SOURCE >=200809L

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

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

int openat(int dirfd,const char * pathname,int flags);
 int openat(int dirfd,const char * pathname,int flags,mode_t mode);

参数

pathname: 为文件路径
flag:参数flags必须是接下来访问模式之一(O_RDONLY,O_WRONLY,O_RDWD)。这将打开文件只读,只写,或可读可写。

示例

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define file_path "/home/hz/c_program/linux/txt.txt"

int main(void)
{
	open(file_path,O_CREAT);
//	open(file_path,O_RDWD);
}

执行程序

hz@titan1:~/c_program/linux$ ls
1           atoi.c   make    open_readme.md  string_cmp.c  uart_test.c
232_test.c  fcntl.c  open.c  process.c       uart          x
hz@titan1:~/c_program/linux$ gcc open.c -o open
hz@titan1:~/c_program/linux$ ./open 
hz@titan1:~/c_program/linux$ ls
1           atoi.c   make  open.c          process.c     txt.txt  uart_test.c
232_test.c  fcntl.c  open  open_readme.md  string_cmp.c  uart     x
hz@titan1:~/c_program/linux$ ll txt.txt 
-rwx-wx--- 1 hz hz 0 9月  28 14:04 txt.txt*
hz@titan1:~/c_program/linux$ cat txt.txt 

write函数

描述

write函数将buf数据的缓冲区写conut个字节写入可写的文件的文件描述符fd中。
返回值:成功返回实际写入的字符串。不成功返回-1,将错误信息写入error变量中。

格式

#include <unistd.h>
ssize_t write(int fd,const void *buf,size_t count);

实例

read函数

描述

read函数将可打开的文件中读取count个字节存储到buf数据缓冲区中。
返回值:如果成功读取返回读取的字节数,

格式

#include <unistd.h>

ssize_t read(int fd,void *buf,size_t count);
```
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值