天天看點

雜亂筆記

QT代碼中運作Linux指令

#include <QProcess>

//QProcess::execute("echo 210 >/sys/class/backlight/pwm-backlight.0/brightness");

~~~

root@atlas7-arm:~# tty

/dev/ttySiRF1

root@atlas7-arm:~# echo "asdf" > /dev/console 

asdf

root@atlas7-arm:~# echo "asdf" > /dev/ttySiRF1 

原理:

首先确定終端從哪裡輸出的。

指令:tty

root@atlas7-arm

:~# tty /dev/ttySiRF1

echo "asdf" > /dev/console   (這個Linux的,window是

CON)

echo "asdf" > /dev/ttySiRF1 也是可以的。

是以代碼裡面用/dev/console 。

 因為檔案指針使用的是标準流檔案,是以我們可以不定義檔案指針。

 接下來我們使用freopen()函數以隻讀方式r(read)打開輸入檔案

slyar.in  { freopen("

", "r", stdin);}

 然後使用freopen()函數以寫入方式w(write)打開輸出檔案slyar.out      {freopen("slyar.out", "w", stdout);}

 接下來的事情就是使用freopen()函數的優點了,我們不再需要修改scanf和printf,而是維持代碼的原樣就可以了。

 因為freopen()函數重定向了标準流,使其指向前面指定的檔案。

 最後隻要使用fclose關閉輸入檔案和輸出檔案即可。

 fclose(stdin);

 fclose(stdout);

詳細如下:

http://blog.chinaunix.net/uid-29261327-id-4571699.html 是以我寫了個宏: ?

#define START_SAVE_LOG(savedFilePath)\

freopen

(

"/dev/console"

,

"r"

, stdin);\

freopen

(savedFilePath,

"w"

, stdout);

#define STOP_SAVE_LOG\

fclose

(stdin);\

fclose

(stdout);

 因為目前INFO宏是在Loger.h裡面,是以這個宏也加在裡面。

具體使用方法:

START_SAVE_LOG("/home/root/AA.log")

STOP_SAVE_LOG

//實際應用

LogControl::getInstance()->addLog(string(to_string(i)+string(p)));

#define INFO(module,format, ...)                   \

do

{                                     \

if

(LogLevel >= INFO_LEVEL)        \

{                                   \

printf

(

"\e[33m"

);          \

printf

(module);          \

printf

(format, ##__VA_ARGS__);  \

printf

(

"\e[0m"

);          \

printf

(

"\n"

);          \

fflush

(stdout); \

}                                   \

}

while

(0)

==========================================================================

檢視硬體資訊:

檢視/proc/cpuinfo,可以知道每個cpu資訊,如每個CPU的型号,主頻等。

#cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 42
model name    : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz      

繼續閱讀