[問題] Linux撰寫程式疑問..

看板Linux作者 (超越自己)時間12年前 (2013/10/13 16:00), 編輯推噓10(10015)
留言25則, 4人參與, 最新討論串1/1
各位板上的先進大家好, 小弟想要在Ubuntu Linux撰一程式(Process), 但因程式的概念並不好,想要請教各位前輩們.. 希望的程式架構如下: 目標:C+MySQL+PHP 透過一C語言程式讀取(Modbus03H,週期性的讀取)sensor傳送的值,再將讀取的值, 傳送至MySQL存放,使用PHP將資料庫內的數據顯示在網頁(人機介面)上。 此人機介面接收到使用者下達開關設備的命令,希望透過socket的方式, 將使用者的控制命令傳送給另一個C語言的程式,來控制設備的開關(或設定)。 (Modbus06H,使用者隨機控制) 即讀取和控制的程式是分開進行,在撰寫的技術方面會較簡單,日後也好維護。 先不考慮使用者下達命令有可能會和週期讀取命令衝突下.. 請問若要將上述這樣的程式架構, 寫在同一個Linux作業系統上, 請問我需要具備怎麼樣的知識呢!?(是要會shell嗎?) 還請各位先進不吝指導, 給小弟一些提醒,我將會去搜尋資料。 謝謝大家的熱心協助。^^ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.86.3

10/13 16:42, , 1F
呃 ... 你不是把你需要的東西都寫出來了嗎 XD
10/13 16:42, 1F

10/13 16:43, , 2F
週期性讀資料寫進資料庫用 C 寫 daemon 去做
10/13 16:43, 2F

10/13 16:44, , 3F
控制的部份寫成 CGI 給前端呼叫這樣
10/13 16:44, 3F
感謝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)

10/13 20:39, , 4F
啊 daemon 不就跑在背景的 process XDD
10/13 20:39, 4F

10/13 20:45, , 5F
週期性讀資料無限迴圈 + sleep 就很夠用了
10/13 20:45, 5F

10/13 20:50, , 6F
同時執行多個程式 ... A & B & C & 全部送背景這樣?
10/13 20:50, 6F

10/13 20:51, , 7F
或者你寫的程式會吐 log 到螢幕上的話也可以用 screen
10/13 20:51, 7F

10/13 23:38, , 8F
謝謝B大詳細的講解,我會先去詳讀daemon的功能及用法!
10/13 23:38, 8F

10/13 23:38, , 9F
在背景執行多個程式的方式我會再查詢看看,再上來回報,謝謝
10/13 23:38, 9F

10/13 23:38, , 10F
您哦^^
10/13 23:38, 10F

10/14 09:21, , 11F
c寫的話,可以用fork()複製一個child process出來,讓
10/14 09:21, 11F

10/14 09:21, , 12F
他成為一個daemon。
10/14 09:21, 12F

10/14 09:31, , 13F
child process用while loop跑應該不會對系統佔太多資
10/14 09:31, 13F

10/14 09:31, , 14F
源,畢竟只是讀小量的感測資源,不過建議中間可以加個s
10/14 09:31, 14F

10/14 09:31, , 15F
leep,讓它別這麼頻繁的跑while loop。
10/14 09:31, 15F

10/14 09:41, , 16F
會shell一些指令還是要吧,甚至你還可以自行撰寫script
10/14 09:41, 16F

10/14 09:41, , 17F
去整合你寫好的程式,或是緊急應變措施?(程式掛點等)
10/14 09:41, 17F

10/14 09:46, , 18F
看你需求是有隻程式需要同時接受資料,跟接受指令,所
10/14 09:46, 18F

10/14 09:46, , 19F
以你的process需要有2個thread,1個收感測資料,1個接
10/14 09:46, 19F

10/14 09:46, , 20F
受指令。
10/14 09:46, 20F
感謝j大的回覆,您說的就是我所缺乏的,各別讀錶、控制(使用Modbus)、C語言操作 資料庫的程式我都已完成了.. 只是不曉得用什麼方式來整合,我會查詢fork()、 shell及script(手邊剛好有鳥哥的私房菜..)。小弟目前是傾向於先不使用多執行緒, 就... 先求有再求完美,謝謝您抽空回文哦^^

10/14 13:56, , 21F
用 crontab 定時執行你的程式就可以啦
10/14 13:56, 21F

10/14 13:56, , 22F
感覺直接執行 php 程式更直接一點 php 程式呼叫 c 程式
10/14 13:56, 22F

10/14 13:57, , 23F
由 c 程式去讀出 sensor 的值 然後傳回給 php 程式
10/14 13:57, 23F

10/14 13:57, , 24F
php 程式再將值存到 mysql 裡
10/14 13:57, 24F
謝謝A大的回覆,您所指的PHP程式呼叫C程式,是用socket(server端、client端)的方 式嗎^^? ※ 編輯: BIAO 來自: 220.136.86.3 (10/14 14:19)

10/17 10:27, , 25F
php 的 system() 或是 exec() 可以呼叫本地端的程式
10/17 10:27, 25F
文章代碼(AID): #1IMbCZrZ (Linux)