看板 Linux 關於我們 聯絡資訊
各位板上的先進大家好, 小弟想要在Ubuntu Linux撰一程式(Process), 但因程式的概念並不好,想要請教各位前輩們.. 希望的程式架構如下: 目標:C+MySQL+PHP 透過一C語言程式讀取(Modbus03H,週期性的讀取)sensor傳送的值,再將讀取的值, 傳送至MySQL存放,使用PHP將資料庫內的數據顯示在網頁(人機介面)上。 此人機介面接收到使用者下達開關設備的命令,希望透過socket的方式, 將使用者的控制命令傳送給另一個C語言的程式,來控制設備的開關(或設定)。 (Modbus06H,使用者隨機控制) 即讀取和控制的程式是分開進行,在撰寫的技術方面會較簡單,日後也好維護。 先不考慮使用者下達命令有可能會和週期讀取命令衝突下.. 請問若要將上述這樣的程式架構, 寫在同一個Linux作業系統上, 請問我需要具備怎麼樣的知識呢!?(是要會shell嗎?) 還請各位先進不吝指導, 給小弟一些提醒,我將會去搜尋資料。 謝謝大家的熱心協助。^^ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.86.3
Bencrie:呃 ... 你不是把你需要的東西都寫出來了嗎 XD 10/13 16:42
Bencrie:週期性讀資料寫進資料庫用 C 寫 daemon 去做 10/13 16:43
Bencrie:控制的部份寫成 CGI 給前端呼叫這樣 10/13 16:44
感謝B大的回覆,其實上述那些個別的程式..我大致上都知道該怎麼弄.. 只是因為要整合的話,我不知道該如何整合.. 您說的..daemon、CGI這些方法(或稱為常識..)就是小弟所不清楚的.. Orz 請問一下週期性讀資料的部份,除了用daemon外,有其他的方式嗎? 如果用無窮迴圈來運作,是不是會有什麼不恰當的地方呢? 還請您不吝回答,謝謝喔。^^ (其實是因為我有請教過教授,但是他不是用daemon來做service,他說他是用process..) ※ 編輯: BIAO 來自: 220.136.86.3 (10/13 17:55) 還有...我不曉得Linux如何同時執行多個自己撰好的程式.. XD 再次感謝您的熱心,謝謝哦^^ ※ 編輯: BIAO 來自: 220.136.86.3 (10/13 17:58)
Bencrie:啊 daemon 不就跑在背景的 process XDD 10/13 20:39
Bencrie:週期性讀資料無限迴圈 + sleep 就很夠用了 10/13 20:45
Bencrie:同時執行多個程式 ... A & B & C & 全部送背景這樣? 10/13 20:50
Bencrie:或者你寫的程式會吐 log 到螢幕上的話也可以用 screen 10/13 20:51
BIAO:謝謝B大詳細的講解,我會先去詳讀daemon的功能及用法! 10/13 23:38
BIAO:在背景執行多個程式的方式我會再查詢看看,再上來回報,謝謝 10/13 23:38
BIAO:您哦^^ 10/13 23:38
jimmytzeng:c寫的話,可以用fork()複製一個child process出來,讓 10/14 09:21
jimmytzeng:他成為一個daemon。 10/14 09:21
jimmytzeng:child process用while loop跑應該不會對系統佔太多資 10/14 09:31
jimmytzeng:源,畢竟只是讀小量的感測資源,不過建議中間可以加個s 10/14 09:31
jimmytzeng:leep,讓它別這麼頻繁的跑while loop。 10/14 09:31
jimmytzeng:會shell一些指令還是要吧,甚至你還可以自行撰寫script 10/14 09:41
jimmytzeng:去整合你寫好的程式,或是緊急應變措施?(程式掛點等) 10/14 09:41
jimmytzeng:看你需求是有隻程式需要同時接受資料,跟接受指令,所 10/14 09:46
jimmytzeng:以你的process需要有2個thread,1個收感測資料,1個接 10/14 09:46
jimmytzeng:受指令。 10/14 09:46
感謝j大的回覆,您說的就是我所缺乏的,各別讀錶、控制(使用Modbus)、C語言操作 資料庫的程式我都已完成了.. 只是不曉得用什麼方式來整合,我會查詢fork()、 shell及script(手邊剛好有鳥哥的私房菜..)。小弟目前是傾向於先不使用多執行緒, 就... 先求有再求完美,謝謝您抽空回文哦^^
AceIan:用 crontab 定時執行你的程式就可以啦 10/14 13:56
AceIan:感覺直接執行 php 程式更直接一點 php 程式呼叫 c 程式 10/14 13:56
AceIan:由 c 程式去讀出 sensor 的值 然後傳回給 php 程式 10/14 13:57
AceIan:php 程式再將值存到 mysql 裡 10/14 13:57
謝謝A大的回覆,您所指的PHP程式呼叫C程式,是用socket(server端、client端)的方 式嗎^^? ※ 編輯: BIAO 來自: 220.136.86.3 (10/14 14:19)
AceIan:php 的 system() 或是 exec() 可以呼叫本地端的程式 10/17 10:27