[英]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=auto
或ls --color=always
來顯示帶顏色的ls
。
這可能是由於系統中某處的bash配置文件別名“ls”到“ls --color”。
在你的程序中使用“ls --color”應該可行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.