link,unlink,remove, rename函数

link函数:创建一个指向现有文件的链接的方法是使用

个人理解为cp命令

#include <unistd.h>
int link( const char *existingpath, const char *newpath );
                                 返回值:若成功返回0,若出错返回-1

此函数创建一个新目录项newpath,它引用现有的文件existingpath。如若newpath已经存在,则返回出错。

只创建newpath中的最后一个分量,路径中的其他部分应当已经存在。

创建新目录项以及增加链接计数应当是个原子操作。

unlink函数:删除一个现有的目录项,可以调用unlink函数

个人理解为rm命令

#include <unistd.h>
int unlink( const char *pathname );
返回值:若成功则返回0,若出错则返回-1

此函数删除目录项,并将由pathname所引用文件的链接计数减1。

如果还有指向该文件的其他链接,则仍可通过其他链接访问该文件的数据。如果出错,则不对该文件做任何更改。

为了解除对文件的链接,必须对包含该目录项的目录具有写和执行的权限。如果对该目录设置了粘住位,则对该目录必须具有写权限,并且具备下面三个条件之一:

拥有该文件。

拥有该目录。

具有超级用户特权。

实例:前提得存在bar

#include "apue.h"
#include <fcntl.h>

int main()
{
  if (open("bar",O_RDWR)<0)
  err_sys("open error");
  if (unlink("bar")<0)
  err_sys("unlink error");
  printf("file unlink\n");
  sleep(15);
  printf("done\n");
  exit(0);

}

remove函数解除对一个文件或目录的链接,

对于文件,remove的功能与unlink相同。对于目录,remove的功能与rmdir相同。

#include <stdio.h>
int remove( const char *pathname);
返回值:若成功则返回0,若出错则返回-1

rename函数对文件或目录更名

#include <stdio.h>
int rename( const char *oldname, const char *newname );
返回值:若成功则返回0,若出错则返回-1
时间: 2024-10-11 01:31:01

link,unlink,remove, rename函数的相关文章

Linux下c编程rename函数导致的问题

前段时间在部署代码的时候,发现一个比较"诡异"的问题 相同的环境下(CentOs 6.5),开发说在其本机的虚拟机汇总测试是正常的,部署到正式环境中时,就会出现问题.相同的函数,总是执行失败.在另一台测试也是完全正常 开发说是服务器安装的原因,来来回回安装了N次.真TM郁闷 然后又说是权限的问题,包的问题,自己安装,服务器拿回家升级,重买服务器.这个拿回去给他妈用等等等等--我都懒的理他 首先说权限问题,我说跟测试正常的那台机器完全相同,说不行,好吧,给你777 又说是包没安装,我说那

How to customize Skin Gallery - Remove / rename skins and groups

1. REMOVE (HIDE) A SPECIFIC SKIN Traverse through the gallery group collection, then through its gallery item collection and hide a corresponding item: private void InitRibbonSkinGallery() { SkinHelper.InitSkinGallery(skinGalleryBarItem); } string[]

第四课 文件系统(下)

====================第四课 文件系统(下)==================== 一.sync/fsync/fdatasync------------------------ 1. 大多数磁盘I/O都通过缓冲进行, 写入文件其实只是写入缓冲区,直到缓冲区满, 才将其排入写队列. 2. 延迟写降低了写操作的次数,提高了写操作的效率, 但可能导致磁盘文件与缓冲区数据不同步. 3. sync/fsync/fdatasync用于强制磁盘文件与缓冲区同步. 4. sync将所有被修改

APUE学习笔记:第四章 文件和目录

4.1 引言 本章将描述文件的特征和文件的性质 4.2 stat.fstat和lstat函数 #include<sys/stat.h> int stat(const char *restrict pathname,struct stat *restrict buf); int fstat(int filedes,struct stat *buf) int lstat(const char *restrict pathname,struct stat *restrict buf); 三个函数的返

ucore 源码剖析

lab1 源码剖析 从实模式到保护模式 初始化ds,es和ss等段寄存器为0 使能A20门,其中seta20.1写数据到0x64端口,表示要写数据给8042芯片的Output Port;seta20.2写数据到0x60端口,把Output Port的第2位置为1,从而使能A20门. 建立gdt,此处只设置了两个段描述符,分别对应代码段和数据段 gdt: SEG_NULLASM # null seg SEG_ASM(STA_X|STA_R, 0x0, 0xffffffff) # code seg

在C程序中使用系统调用函数 rename()

1 查看系统调用函数的信息 2 编写代码 3 测试编译程序 ·············· 1 查看系统调用函数的信息 查看系统调用函数 rename() 的信息.寻找函数使用方法,函数返回值情况. # man 2 rename 函数有两个实参,是两个字符指针(常量):原始文件名在前,新文件名在后. 成功执行后返回值是 "0". 头文件是 "stdio.h" 2 编写代码 vim changename.c gcc -o cn changename.c strip cn

php函数copy和rename的区别

copy ( string source, string dest )将文件从 source 拷贝到 dest.如果成功则返回 TRUE,失败则返回 FALSE. 如果要移动文件的话,请用 rename() 函数.rename ( string oldname, string newname [, resource context] )重命名一个文件或目录尝试把 oldname 重命名为 newname. 如果成功则返回 TRUE,失败则返回 FALSE.

linux常用C函数目录

字符测试篇 isalnum isalpha isascii iscntrl isdigit isgraphis islower isprint isspace ispunct isupper isxdigit 字符串转换篇 atof atoi atol gcvt strtod strtol strtoul toascii tolower toupper 内存控制篇 calloc free getpagesize malloc mmap munmap 日期时间篇 asctime ctime get

Perl参考函数

这是标准的Perl解释器所支持的所有重要函数/功能的列表.在一个函数中找到它的详细信息. 功能丰富的 Perl:轻松调试 Perl Perl脚本的调试方法 perl 入门教程 abs - 绝对值函数 accept - 接受传入的socket连接 alarm - 调度一个SIGALRM atan2 -Y/X的反正切值,范围在-PI到PI bind - 地址绑定到一个套接字 binmode - 准备二进制文件I / O bless - 创建一个对象 caller - 获取当前子程序调用的上下文 ch