首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么我们应该避免使用 abort、exit、getenv 和 system?

    在C/C++编程中,(或C++中的)提供了一些看似方便的函数,如 abort, exit, getenv 和 system。...极差的可移植性: 你编写的 shell 命令可能在一个平台(如 Linux)上有效,但在另一个平台(如 Windows)上完全失效或产生不同的行为。...如果用户输入是 "none; rm -rf /",后果不堪设想 return 0;}4. getenv - 不可靠的“环境变量”问题所在:getenv(const char *name) 用于获取环境变量的值...它的问题相对轻微,但依然需要注意:线程安全性: getenv 返回一个指向静态缓冲区的指针,这个缓冲区可能在后续调用 getenv、putenv 或 setenv 时被修改。这在线程环境中是不安全的。...正确的做法:谨慎使用 getenv。如果使用,应尽早将获取到的值复制到本地缓冲区中,以避免被其他代码修改。并且,要始终对返回的指针进行空值检查,并准备好回退方案(默认值)。

    19810

    【Linux】实现一个简易的shell命令行

    一.项目简介 在使用Linux的过程中,相信大家最熟悉的就是Linux的命令行使用方式了,我们可以给命令行输入任意有效指令, 然后命令行会根据我们输入的指令来完成相应的操作。...今天我们尝试在Linux使用C语言自己实现一个简单的shell命令行程序,它可以像真的命令行那样执行命令, 与程序员交互, 话不多说, 先来看看实现效果吧: myshell功能测试 二.分析项目实现...n) NormalExcute(argv); } return 0; } 具体的获取命令行逻辑如下函数: const char* getusername() { //通过getenv...()获取环境变量中的用户名 return getenv("USER"); } void getpwd() { //通过getenv()获取环境变量中的路径 //return getenv("PWD...n) NormalExcute(argv); } return 0; } 结语 希望这篇关于 在Linux中实现一个简易的shell命令行 的博客能对大家有所帮助,欢迎大佬们留言或私信与我交流.

    38411

    【Linux系统编程】—— 从零开始实现一个简单的自定义Shell

    在云服务器(虚拟机)上,我们可以使用系统所提供的Bash,即Linux下常见的shell Shell解释器的功能包括: 命令执行:它会解析用户输入的命令,并将其传递给操作系统内核以执行。...实现shell的基础认识 我们可以通过参考Linux当中的shell做出我们自己的shell 命令行的外表 用户名, 主机名,当前路径都保存在环境变量中。...所以在我们的要实现的代码当中,我们可以将这三个值通过封装3个函数得到: const char *GetUserName() { const char *name = getenv("USER")...() { return getenv("USER"); } //获取主机名 const char*gethostname() { return getenv("HOSTNAME"); } //获取路径名...wait.h> #include #define COMMAND_SIZE 1024 #define FORMAT "[%s@%s %s]# " 通过上面的每一步就可以在Linux

    39310
    领券