2015-01-09 30 views
-1

我有一個程序來打開,寫和讀ttyUSB0;我有這個問題,我必須每天都要執行命令sudo chmod 666 ttyUSB0,我可以在C++中插入這個命令嗎?「sudo chmod 666 ttyUSB0」in C++

+1

http://en.cppreference.com/w/cpp/utility/program/system – bolov

+0

bitttcoinn我正在考慮bittcoinn –

+3

但是,不管停止重置模式,重置模式會不會更好? –

回答

0

當然。通常情況下,你可以調用chmod() C函數,但你似乎需要sudo,所以:

system("sudo -S chmod 666 ttyUSB0 <<< PASSWORD") 

但一定要檢查返回值。零意味着成功。

+0

系統是否需要用戶輸入命令? (例如要求輸入密碼?) – bolov

+0

如果'sudo'需要密碼,那麼這個。您可以設置您的系統以允許沒有密碼的'sudo',但這不是一個編程問題,它是適合SuperUser的系統管理。或者,也許你可以重新考慮是否需要「sudo」,或者可能不需要整個命令?你也可以把它放在root的'cron'中。 –

+0

我需要密碼,我可以在C++中引入密碼嗎? – Igor

3

您的原始問題允許訪問串行端口(/ dev/ttyUSBxxx)也可以解決,爲您的系統上的特定程序提供所需的功能。 。看看setcap 然後,你可以這樣做:

setcap cap_sys_tty_config+ep /path/to/your/program 

我不知道究竟你做什麼樣的能力需求(還沒有嘗試過)。

注意:設備節點是恕我直言系統的某些權限由系統的所有者定義如果我運行一個程序並且它改變了我的系統上的文件和/或devicenodes的權限,我將不高興。 規範的方法是將用戶添加到組,例如dialout組對debian具有tty訪問權限。