守護程序(1)daemon,表示守護程序,簡稱為d(程序名後面帶d的基本就是守護程序)
(2)長期執行(一般是開機執行直到關機時關閉)
(3)與控制台脫離(普通程序都和執行該程序的控制台相繫結,表現為如果終端被強制關閉了則這個終端中執行的所有程序都被會關閉,背後的問題還在於會話)
(4)伺服器(server),伺服器程式就是乙個一直在執行的程式,可以給我們提供某種服務(譬如nfs伺服器給我們提供nfs通訊方式),當我們程式需要這種服務時我們可以呼叫伺服器程式(和伺服器程式通訊以得到伺服器程式的幫助)來程序這種服務操作。伺服器程式一般都實現為守護程序。
(5)常見守護程序(syslogd,系統日誌守護程序,提供syslog功能)、(cron,cron程序用來實現作業系統的時間管理,linux中實現定時執行程式的功能就要用到cron)
如何實現守護程序(1)子程序等待父程序退出
(2)子程序使用setsid建立新的會話期,脫離控制台
(3)呼叫chdir將當前工作目錄設定為/
(4)umask設定為0以取消任何檔案許可權遮蔽
(5)關閉所有檔案描述符
(6)將0、1、2定位到/dev/null
#include #include #include #include #include #include void create_daemon(void);
int main(void)
return 0;
}// 函式作用就是把呼叫該函式的程序變成乙個守護程序
void create_daemon(void)
if (pid > 0)
// 執行到這裡就是子程序
// setsid將當前程序設定為乙個新的會話期session,目的就是讓當前程序
// 脫離控制台。
pid = setsid();
if (pid < 0)
// 將當前程序工作目錄設定為根目錄
chdir("/");
// umask設定為0確保將來程序有最大的檔案操作許可權
umask(0);
// 關閉所有檔案描述符
// 先要獲取當前系統中所允許開啟的最大檔案描述符數目
int cnt = sysconf(_sc_open_max);
int i = 0;
for (i=0; ilinux也提供了daemon函式用於建立守護程序
int daemon(int nochdir, int noclose);
1. daemon()函式主要用於希望脫離控制台,以守護程序形式在後台執行的程式。
2. 當nochdir為0時,daemon將更改進城的根目錄為root(「/」)。
3. 當noclose為0是,daemon將進城的stdin, stdout, stderr都重定向到/dev/null。
Linux串列埠應用程式設計
常見的資料通訊的基本方式可分為並行通訊與序列通訊兩種。1.並行通訊是指利用多條資料傳輸線將乙個字資料的各位元位同時傳送。它的特點是傳輸速度快,適用於傳輸距離短且傳輸速度較高的通訊。2.序列通訊是指利用一條傳輸線將資料以位元位為單位順序傳送。特點是通訊 線路簡單,利用簡單的線纜就可實現通訊,降低成本,...
Linux應用程式設計 mmap
二話不說,上來就問下那個man name mmap,munmap map or unmap files or devices into memory synopsis include void mmap void addr,size t length,int prot,int flags,int f...
IAP 應用程式設計
1 檢查是否需要對第二部分 進行更新 2 如果不需要更新則轉到4 3 執行更新操作 4 跳轉到第二部分 執行 第一部分 必須通過其它手段,如jtag或isp燒入 第二部分 可以使用第一部分 iap功能燒入,也可以和第一部分 一道燒入,以後需要程式更新是再通過第一部分iap 更新。對於stm32來說,...