C++函数system(command)在Linux终端中输出的内容没有颜色。

4
当我在Linux终端直接运行命令,比如“ls”时,输出带有颜色。但是,当我运行一个调用system("ls")的C++程序时,输出没有颜色。
有没有办法让后者也显示彩色输出?
谢谢!

3
你为什么要执行 system("ls"); 命令? - Basile Starynkevitch
4个回答

6
在这里,为什么没有颜色的答案请点击此处

system() 通过调用/bin/sh -c命令执行由command指定的命令,并在命令完成后返回。

sh -c忽略别名。也许你有一个别名使得ls被解释成ls --color=auto
例如,如果我执行sh -c 'ls',就不会出现颜色。
证明:
wow ♪[01:04 AM][vnbraun@chernobyl ~]$ which ls
alias ls='ls --color=auto'
        /bin/ls
wow ♪[01:08 AM][vnbraun@chernobyl ~]$ sh -c 'which ls'
/bin/ls

因此,您可以尝试执行system("ls --color=auto");

4

你可以运行

 system("/bin/ls --color=auto");

但我认为你不应该从C++程序中运行ls。也许你想使用-一些组合- readdir(3), stat(2), nftw(3), glob(3), wordexp(3)等等....

我认为从C++程序中派生一个shell,然后再运行/bin/ls是没有用的。有更简单的方法来实现你的目标(我猜不到)。

你可能应该阅读Advanced Linux Programming


1

尝试调用ls --color=autols --color=always以使用颜色显示ls


1
这很可能是由于您系统中的某个bash配置文件将"ls"别名为"ls --color"所致。
在程序中使用"ls --color"应该可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接