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