creat函数和open函数的区别

顾名思义,creat创建新文件,open打开文件。但,open也可以起到创建新文件的作用。

#include <fcntl.h>
int creat(const char *pathname, mode_t mode);
//Returns: file descriptor opened for write-only if OK, 1 on error

当creat的文件已存在时,creat将截断文件原文件,文件的修改时间访问时间也一并被修改。

creat相当于:open (pathname, O_WRONLY | O_CREAT | O_TRUNC, mode);

open

A file is opened or created by calling the open function.

#include <fcntl.h>
int open(const char *pathname, int oflag, ... /*mode_t mode   */ );
//Returns: file descriptor if OK, 1 on error

第三个参数只有在创建文件时才有用。

One deficiency with creat is that the file is opened only for writing. Before the new version of open was provided, if we were creating a temporary file that we wanted to write and then read back, we had to call creat, close, and then open. A better way is to use the open function, as in
    open (pathname, O_RDWR | O_CREAT | O_TRUNC, mode);

from APUE

总的来说,open功能更强,包含了creat的功能。建议用open。

时间: 2024-12-11 15:22:20

creat函数和open函数的区别的相关文章

检测某个方法是否属于某个类中--解析php函数method_exists()与is_callable()的区别

php函数method_exists() 与is_callable()的区别在哪?在php面相对象设计过程中,往往我们需要在调用某一个方法是否属于某一个类的时候做出判断,常用的方法有 method_exists()和is_callable() 相比之下,is_callable()函数要高级一些,它接受字符串变量形式的方法名作为 第一个参数,如果类方法存在并且可以调用,则返回true.如果要检测类中的方法是否能被调用,可以给函数传递一个数组而不是类的方法名作为参数.数组必须包含对象或类名,以将其作

javascript 函数声明和函数表达式的区别(学习笔记)

javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数可以在函数声明之前调用,而函数表达式的函数只能在声明之后调用. 3).以函数声明的方法定义的函数并不是真正的声明,它们仅仅可以出现在全局中,或者嵌套在其他的函数中,但是它们不能出现在循环,条件或者try/catch/finally中,而 函数表达式可以在任何地方声明. 下面分别用两种方法定义函数:

函数声明与函数表达式的区别

1.函数声明 函数声明以function关键字开头,接着是必须的函数(变量)名和以逗号分隔的可选的参数列表,再接着就是以大括号封装的函数体.函数声明必须是一个单独的JavaScript语句. 2.函数表达式 在任何情况下都是其它JavaScript语句的一部分(比如复制表达式等号的右侧.函数的参数)的函数被称为函数表达式. 3.比较 //函数声明function myFunctionDeclaration(){ function innerFunction() {} } //以下为函数表达式 v

可重入函数与线程安全的区别和联系

1.可重入函数 可重入函数即表示可以被多个执行流重复进入,意味着只使用自己栈上的变量,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰. 一个不可重入函数的例子: int global; int fun( int a ) { int temp; global = a; temp = gloabl*2; return temp; } global是一个全局变量,若进程a运行这段代码传入的参数是2,预期的结果是4:进程b也运行这段代码,传入的参数是3,由于操作系统的进程调

PHP函数 mysql_real_escape_string 与 addslashes 的区别

addslashes 和 mysql_real_escape_string 都是为了使数据安全的插入到数据库中而进行的过滤,那么这两个函数到底是有什么区别呢? 首先,我们还是从PHP手册入手: 手册上addslashes转义的字符是单引号(').双引号(").反斜线(\)与NUL(NULL 字符). mysql_real_escape_string转义的字符并没有被提到,只是说了一句: 注意:mysql_real_escape_string() 并不转义% 和_. 为什么PHP手册没有说呢?因为

PHP函数addslashes和mysql_real_escape_string的区别

转自:http://www.jb51.net/article/49205.htm 这篇文章主要介绍了PHP函数addslashes和mysql_real_escape_string的区别,以及一个SQL注入漏洞介绍,需要的朋友可以参考下 首先:不要使用mysql_escape_string,它已被弃用,请使用mysql_real_escape_string代替它. mysql_real_escape_string和addslashes的区别在于: 区别一: addslashes不知道任何有关My

PHP合并数组array_merge函数运算符加号与的区别

两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用"+"合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉(注意:不是覆盖而是保留最先出现的那个值).例子: $array1 = array(1=>'0′);$array2 = array(1=> "data");$result1 = $array2 + $arr

call()函数、apply()函数区别与意义

使用apply函数或call函数的意义: 在面对对象编程过程中,当A对象调用其他对象而非A对象方法是,该方法中所有的this引用都指向此方法所在的对象,而不是当前代码的上下文即A对象, 为了保持this的原来的指向(即A对象),则需要使用apply或call函数. apply()和call()的区别: apply和call,它们的作用都是将函数绑定到另外一个对象上去运行 原型分别是 Function.prototype.apply(thisArg,argArray); Function.prot

append()函数与html()函数的区别

append()函数与html()函数的区别:其实这两个函数的区别是蛮大的,比如append()函数可以向指定元素尾部追加元素对象,而html()函数就不可以.他们两者最为相似的功能,就是为指定元素设置html内容的时候.代码实例如下: <!DOCTYPE html><html> <head> <meta charset=" utf-8"> <meta name="author" content="ht

自定义函数与储存过程的区别

存储过程和自定义函数的区别 Difference between Procedure and User Defined Function 首先来看一下存储过程和自定义函数的概念 一. 什么是存储过程? 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得 多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单 元处理. 存储过程存储在数据库内, 可由应用程序通过一个调用执行, 而且允许用户声明变 量.有条件执行以及其它强大的编程功能. 存储过程