码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 改变工作目录和根目录


    改变工作目录和根目录

    进程有工作目录和根目录。

    工作目录:进程在哪个路径下被运行起来哪个路径就是进程的工作目录(Current Woring Directory, CWD)

    根目录:就是"/"

    工作目录和根目录可以通过/proc/PID/cwd和/proc/PID/root进行查看

    image-20220821175748810

    工作目录和根目录都可以进行更改,获取进程当前工作目录和改变进程工作目录的函数分别是:

    #include 
    
    char *getcwd(char *buf, size_t size);
    int chdir(const char *path);
    
    • 1
    • 2
    • 3
    • 4

    buf参数指向的内存用于存储进程当前工作目录的绝对路径名,其大小由size参数指定。

    如果当前工作目录的绝对路径的长度(再加上一个空结束字符“\0”)超过了size,则getcwd将返回NULL,并设置errno为ERANGE。

    如果buf为NULL并且size非0,则getcwd可能在内部使用malloc动态分配内存,并将进程的当前工作目录存储在其中。如果是这种情况,则我们必须自己来释放getcwd在内部创建的这块内存。

    getcwd函数成功时返回一个指向目标存储区(buf指向的缓存区或是getcwd在内部动态创建的缓存区)的指针,失败则返回NULL并设置errno。

    chdir函数的path参数指定要切换到的目标目录。它成功时返回0,失败时返回-1并设置errno。

    改变进程根目录可以使用chroot:

    #include 
    
    int chroot(const char *path);
    
    • 1
    • 2
    • 3

    path参数指定要切换到的目标根目录。它成功时返回0,失败时返回-1并设置errno。

    chroot并不改变进程的当前工作目录。

    改变进程的根目录之后,程序可能无法访问类似/dev的文件(和目录),因为这些文件(和目录〉并非处于新的根目录之下。不过好在调用chroot之后,进程原先打开的文件描述符依然生效,所以我们可以利用这些早先打开的文件描述符来访问调用chroot之后不能直接访问的文件(和目录),尤其是一些日志文件。此外,只有特权进程才能改变根目录。

  • 相关阅读:
    Python3,区区5行代码,让黑白老照片变成华丽的彩色照,被吸粉了。
    【软考-中级】系统集成项目管理工程师-合同管理历年案例
    【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十六)
    使用 CRD 开启您的 Ingress 可观测之路
    96. 不同的二叉搜索树
    【946. 验证栈序列】
    汇编语言与接口技术笔记(持续更新)
    Pytorch实现CNN
    Spring MVC文件请求处理详解:MultipartResolver
    水电表远程集中抄表管理系统
  • 原文地址:https://blog.csdn.net/qq_41474648/article/details/126455642
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号