地方门户网站管理系统,线上运营思路,房山广州网站建设,wordpress自定义重用结构1.linux系统函数 \qquad使用linux系统函数和使用一般C库函数没有什么本质区别。在linux下编写c语言程序时#xff0c;如果使用系统函数#xff0c;也需要包含系统函数的头文件#xff0c;函数也有参数#xff0c;返回值#xff0c;这和使用C库函数时的操作是一样的。
2.o…1.linux系统函数
\qquad使用linux系统函数和使用一般C库函数没有什么本质区别。在linux下编写c语言程序时如果使用系统函数也需要包含系统函数的头文件函数也有参数返回值这和使用C库函数时的操作是一样的。
2.open函数
\qquadopen函数有两种类型一种是两个参数一种是三个参数。两个参数的open()函数适合于打开已经存在的函数三个参数的open()函数适合于创建并打开一个不存在的文件。
2.1 open函数有两个参数时
\qquadopen()函数的返回值当返回-1时发生错误当返回文件描述符(不是-1)时打开成功。 \qquadopen()函数的两个参数第一个参数文件路径需要用双引号把文件路径引起来第二个参数打开方式有以下三种分别是O_RDWR可读可写O_RDONLY只读O_WRONLY只写。 使用系统函数open()函数举例open()需要包含三个头文件。 \qquad当函数只有两个参数时举例。
#includestdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#includeerrno.h
#includestdlib.h
#includeunistd.h
int main()
{int open_fd;int close_fd;open_fd open(hello.txt,O_RDWR);if(open_fd-1){perror(open fail!);exit(1);}else{printf(open success,文件描述符%d\n,open_fd);}close_fd close(open_fd);if(close_fd-1){perror(close fail!);exit(1);}else if(close_fd0){printf(close success\n);}return 0;
}\qquadopen()函数和close()函数是成对出现的文件打开之后在使用之后必须进行关闭。close()函数只有一个并且只有一个参数。 \qquadclose()函数的返回值当关闭成功时返回0当关闭失败时返回-1。 \qquadclose()函数的参数close()函数只有一个参数即文件描述符也就是open()函数打开成功之后的返回值。
2.2 open函数有三个参数时
\qquad有三个参数的open()函数可以用于创建新文件。
\qquad返回值当返回-1时发生错误当返回文件描述符(不是-1)时打开成功。
\qquadopen()函数的三个参数 \qquad \quad第一个参数文件路径同上 \qquad \quad第二个参数除了上述的O_RDWR可读可写O_RDONLY只读O_WRONLY只写外还有 O_CLOEXEC, O_CREAT, O_DIRECTORY, O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TMPFILE和 O_TRUNC。这里创建文件采用O_RDWR | O_CREAT \qquad \quad第三个参数基于数字设置文件权限实际的文件权限本地掩码取反之后与设置的文件权限进行按位与操作查看本地掩码命令umask。我的本地掩码是0002二进制就是000 000 010本地掩码取反就是111 111 101设置的权限是777二进制就是111 111 111我们将两者按位与得到111 111 101转换过来就是775也就是rwx rwx r-x
\qquad举例
#includestdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#includeerrno.h
#includestdlib.h
#includeunistd.hint main()
{int open_fd;int close_fd;open_fd open(creat.txt,O_RDWR|O_CREAT,0777);if(open_fd-1){perror(open fail!);exit(1);}else{printf(open syccess!\n);}close_fd close(open_fd);if(close_fd-1){perror(close fail);exit(1);}else if(close_fd0){printf(close success!\n);}return 0;
}\qquad执行之后果然生成一个空文件creat.txt权限是rwx rwx r-x。