mkdir、chdir、getcwd系统调用

一、mkdir

   mkdir 是一个用于创建目录(文件夹)的命令或系统调用。它的名称是 "make directory" 的缩写,用于在文件系统中创建新的目录。在不同的操作系统中,mkdir 可能有不同的使用方式和选项。

通常,mkdir 命令或系统调用接受以下参数:

  1. pathname:要创建的目录的路径名称。这是必选参数,它指定了新目录的位置和名称。

  2. mode:权限模式(仅适用于系统调用)。在一些操作系统上,你可以指定新创建目录的权限,以确定哪些用户可以访问、读取和写入这个目录。权限通常以八进制表示,例如 0777,其中每一位代表不同的权限。常见的权限位包括:

    • 4:读权限(r)
    • 2:写权限(w)
    • 1:执行权限(x)

    你可以通过将这些权限位相加来创建所需的权限组合。例如,0777 表示所有用户都有读、写和执行权限。



/*
 *
 # include <sys/stat.h>
 # include <sys/types.h>
 int mkdir (const char *pathname , mode_t mode);
        作用: 创建目录名称
        mode: 权限,八进制数
        返回值:
            成功 0
            失败 -1
 */
# include <sys/stat.h>
# include <sys/types.h>
#include <stdio.h>
int main(){
   // window下 mkdir只有一个参数   ,  linux : ret =mkdir("aaa",0777);
    int ret =mkdir("aaa");
    if(ret==-1){
        perror("mkdir");
        return -1;
    }
    return 0;
}

二、chdir

chdir 是一个C语言中的系统调用,用于修改进程的当前工作目录(Current Working Directory,CWD)。它允许程序在运行时切换到不同的目录,从而影响了程序在文件系统中的位置。以下是关于 chdir 函数的一些重要信息:

参数:

  • path:一个字符串,指定要设置为当前工作目录的目标目录的路径。

返回值:

  • 如果成功,chdir 返回0。
  • 如果失败,chdir 返回-1,并设置全局变量 errno 来指示错误的类型。

作用:

  • chdir 用于改变进程的当前工作目录,将其切换到指定的目录。
  • 修改当前工作目录后,进程执行文件和目录操作时将相对于新的当前工作目录。
  • 这对于需要在不同目录中执行文件或文件操作的程序非常有用。
  • 需要注意的是,chdir 只能修改当前进程的工作目录,不会影响其他进程的工作目录。而且,在切换工作目录后,进程对于文件和目录的访问都将相对于新的工作目录。这对于需要在不同目录中执行文件操作的程序很有用。


/*
 *
 chdir(const char *path);
    作用:
        修改进程的工作目录
    *path:
        修改工作目录
 *
 *
 */


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "fcntl.h"
int main() {
    char cwd[PATH_MAX]; // 用于存储当前工作目录的缓冲区

    if (getcwd(cwd, sizeof(cwd)) != NULL) {
        printf("Current working directory: %s\n", cwd);
    } else {
        perror("getcwd() error");
        return 1;
    }
    int ret = chdir("/czhangccc/dad");
    if(ret==-1){
        perror("chdir");
        return -1;
    }

    int fd = open("child.txt",O_CREAT|O_RDWR,0664);
    if(fd==-1){
        perror("fd");
        return -1;
    }
    close(fd);

    char cwd1[PATH_MAX]; // 用于存储当前工作目录的缓冲区

    if (getcwd(cwd1, sizeof(cwd1)) != NULL) {
        printf("Current working directory: %s\n", cwd1);
    } else {
        perror("getcwd() error");
        return 1;
    }
    return 0;
}

三、getcwd

getcwd 是一个C语言中的系统调用,用于获取当前进程的工作目录(Current Working Directory,CWD)。工作目录是指当前进程在文件系统中的位置,它影响了进程执行文件和目录操作时的相对路径。

参数:

  • buf:一个指向字符数组的指针,用于存储获取到的工作目录。通常,这个数组是足够大以容纳工作目录的完整路径。
  • sizebuf 数组的大小,以字节数为单位。

返回值:

  • 如果成功,getcwd 返回一个指向存储工作目录路径的缓冲区 buf 的指针。
  • 如果失败,getcwd 返回 NULL,并设置全局变量 errno 以指示错误的类型。

作用:

  • getcwd 用于获取当前进程的工作目录,也就是当前所在的目录的路径。
  • 当你需要知道程序在文件系统中的位置或执行文件操作时,这个函数非常有用。
  • 需要注意的是,getcwd 函数通常要求 buf 数组足够大以容纳工作目录的完整路径,否则可能会截断路径。因此,在使用时,应该确保为 buf 分配足够大的内存空间,或者在适当的情况下进行错误处理。


/*
 char *getcwd(char *buf,size_t size);
    作用:
        获取当前工作的目录
    参数:
        buf : 存储的路径,指向的是一个数组
        size: 数组大小
    返回值:
        返回的指向的一块内存,这个书韩剧就是第一个参数
 */
#include <stdio.h>
#include <unistd.h>
int main() {
    char buf[185]; // 用于存储当前工作目录的缓冲区

    if (getcwd(buf, sizeof(buf)) != NULL) {
        printf("Current working directory: %s\n", buf);
    } else {
        perror("getcwd() error");
        return 1;
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值