簡體   English   中英

C ++函數系統(命令)的輸出在Linux終端中不顯示顏色

[英]Output of C++ function system(command) does not show color in Linux terminal

當我在我的Linux終端中直接運行命令時,說“ls”,輸出是帶顏色的。 但是,當我運行一個調用system(“ls”)的C ++程序時,輸出沒有顏色。

有沒有辦法讓后一種方式也顯示彩色輸出?

謝謝!

這里沒有顏色的答案就在於此

system()通過調用/ bin / sh -c命令執行命令中指定的命令,並在命令完成后返回。

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");

你可以跑

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

但我不認為你真的應該從你的C ++程序運行ls 也許你想使用 - readdir(3)stat(2)nftw(3)glob(3)wordexp(3)等等的組合....

我不認為分支然后運行/bin/ls的shell在C ++程序中是有用的。 有更簡單的方法來實現你的目標(我無法猜測)。

您可能應該閱讀高級Linux編程

嘗試調用ls --color=autols --color=always來顯示帶顏色的ls

這可能是由於系統中某處的bash配置文件別名“ls”到“ls --color”。

在你的程序中使用“ls --color”應該可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM