gpt4 book ai didi

c++ - system() 不适用于修改命令行提示符

转载 作者:行者123 更新时间:2023-11-27 23:39:08 25 4
gpt4 key购买 nike

我在 Ubuntu 中使用 C++,想修改命令提示符。如果我在命令行中输入 PS1=abc,提示符就变成了 abc。

但是,如果我执行调用 system("PS1=ABC") 的程序,提示不会改变。

另一方面,system() 似乎可以很好地处理不同的命令,并且命令行服从。

最佳答案

PS1 是一个环境变量。每个进程都有自己的一组环境变量。

当您启动一个新进程时,它会继承其父环境的拷贝。对进程环境的任何更改都不会影响其父进程的环境。

system 函数启动一个新的子进程。这意味着 system("PS1=ABC") 启动一个子进程,该子进程设置自己的 PS1 变量然后退出。

要在您自己的进程中修改环境变量,请使用 putenv (Linux 和其他类似 Unix 的系统)或 SetEnvironmentVariable ( window )。请注意,这仍然不会影响您的父进程(可能是您的程序从中启动的 shell),因此设置 PS1 仍然不会有任何影响,除非您随后作为子进程启动另一个 shell .

关于c++ - system() 不适用于修改命令行提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56909979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com