首页 > 其他分享 >GLib 库g_mkdir_with_parents - 创建多级父子目录

GLib 库g_mkdir_with_parents - 创建多级父子目录

时间:2024-09-22 09:53:31浏览次数:7  
标签:GLib 函数 创建 mkdir parents 目录 dir

g_mkdir_with_parents 是 GLib 库中的一个函数,它用于创建目录,如果目录的父目录不存在,它也会创建父目录。这个函数的原型如下:

gint
g_mkdir_with_parents (const gchar *pathname, gint mode);

参数 pathname 是要创建的目录的路径,mode 是设置新创建目录的权限。

如果目录创建成功,或者目录已经存在,函数返回 0。如果发生错误,函数返回 -1,并且 errno 会被设置。

这个函数在 GLib 2.8 版本中引入,可以用于确保目录的存在,无论其父目录是否已经存在。

以下是一些使用 g_mkdir_with_parents 函数的代码示例:

  1. 创建一个目录,如果父目录不存在,则父目录也会被创建:
gchar *dir = g_build_filename(g_get_user_config_dir(), "myapp", NULL);
if (g_mkdir_with_parents(dir, 0700) == -1) {
    g_critical("Could not create directory \"%s\": %s", dir, strerror(errno));
    g_free(dir);
    return NULL;
}
g_free(dir);
  1. 在创建目录时设置权限:
g_mkdir_with_parents("/path/to/directory", 0755);
  1. 检查目录是否创建成功,并处理错误:
if (g_mkdir_with_parents("/path/to/directory", 0700) == -1) {
    g_warning("Failed to create directory: %s", strerror(errno));
}

这些示例展示了如何在实际应用中使用 g_mkdir_with_parents 函数来创建目录,并处理可能出现的错误。

标签:GLib,函数,创建,mkdir,parents,目录,dir
From: https://blog.51cto.com/yingnanxuezi/12079495

相关文章

  • 对不实现接口的类进行动态代理,用cglib
    CGLIB(CodeGenerationLibrary)是一个强大的、高性能的代码生成库,它用于在运行时生成Java字节码。CGLIB主要用于创建动态代理对象,特别是那些不实现接口的类。与Java反射API提供的动态代理机制不同,CGLIB可以代理具体类,而不仅仅是接口。CGLIB动态代理的原理CGLIB通过继承......
  • Docker安装MySQL8.0.39报错:Fatal glibc error: CPU does not support x86-64-v2
    用Docker升级MySQL时报错Fatalglibcerror:CPUdoesnotsupportx86-64-v2,在网上找了很久资料,发现是MySQL的新镜像使用的是OracleLinux9,当前服务器的CPU无法安装这个所以报错,解决方法就是更换镜像版本这是我的解决方案,基于Dockerfile生成镜像:FROMm.daocloud.io/docker.......
  • MySQL与Glibc:了解它们的关系和版本
    最近发现mysql的linux版都有一个glibc后缀,特意查了一下这个glibc与mysql的关系一、解释MySQL是一款流行的开源关系型数据库管理系统,而Glibc则是GNUC库(GNUCLibrary)的简称。Glibc是大多数Linux系统上的标准C库,提供了许多基本的系统调用和函数。MySQL在运行时依赖于Glibc提供的......
  • musl libc 与 glibc 在 .NET 应用程序中的兼容性
    muslLinux和glibc是两种不同的C标准库实现,它们在多个方面存在显著差异。历史和使用情况:glibc是较早且广泛使用的C标准库实现,具有较长的开发历史和广泛的社区支持。它被大多数Linux发行版采用,特别是在桌面和服务器环境中。musl是一个相对较新的实现,旨在提供更小、更快......
  • 010-BUG: org.springframework.cglib.core.CodeGenerationException: java.lang.refle
    参考:Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass-CSDN博客1.完整报错:"msg":"org.springframework.cglib.core.CodeGenerationException:java.lang.reflect.InaccessibleObjectException-->Unabletomakeprotect......
  • JDK 动态代理和 CGLib 动态代理区别
    1.代理方式JDK动态代理:只支持接口代理。它通过反射机制生成一个实现了指定接口的代理类。代理对象只能调用接口中定义的方法。CGLib动态代理:通过继承方式生成代理类。它可以代理没有实现接口的类。代理对象可以调用类中的所有方法(除了final方法)。2.性能JD......
  • musl libc 与 glibc 在 .NET 应用程序中的兼容性
    muslLinux和glibc是两种不同的C标准库实现,它们在多个方面存在显著差异。历史和使用情况:glibc是较早且广泛使用的C标准库实现,具有较长的开发历史和广泛的社区支持。它被大多数Linux发行版采用,特别是在桌面和服务器环境中。musl是一个相对较新的实现,旨在提供更小、更快......
  • glibc-2.17 编译失败
    报错如下:Error:`_obstack@GLIBC_2.2.5'can'tbeversionedtocommonsymbol'_obstack_compat'修复方法:修改代码diff--gita/malloc/obstack.cb/malloc/obstack.cindex5786da0aa4..c27a422077100644---a/malloc/obstack.c+++b/malloc/obstack.c@@......
  • Gnu: binutils: ld: .gnu.warning.链接时的主动警告 glibc
    这个是一个gnu的extension,glibc会使用这个功能,标记即将被淘汰的符号,产生链接时的警告,比如:/*WhenareferencetoSYMBOLisencountered,thelinkerwillemitawarningmessageMSG.*//*Wewantthe.gnu.warning.SYMBOLsectiontobeunallocated.*/#defin......
  • glibc/libc/blib区别
    转自:http://blog.csdn.net/yasi_xi/article/details/9899599【glibc和libc】 glibc和libc都是Linux下的C函数库。 libc是Linux下的ANSIC函数库;glibc是Linux下的GUNC函数库。 ANSIC和GNUC有什么区别呢?     ANSIC函数库是基本的C语言函数......