亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5139 | 回復(fù): 11
打印 上一主題 下一主題

如果在關(guān)機(jī)前保存數(shù)據(jù)? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-08-30 11:56 |只看該作者 |倒序?yàn)g覽
假設(shè)自己寫(xiě)一個(gè)服務(wù)程序,開(kāi)機(jī)后自動(dòng)運(yùn)行,是一個(gè)后臺(tái)服務(wù)程序。
如果其它用戶通過(guò)其它命令(比如root用戶輸入reboot命令)或其它程序要關(guān)閉計(jì)算機(jī),我的程序會(huì)收到SIGTERM信號(hào),但捕捉不到SIGKILL信號(hào),收到SIGTERM信號(hào)后如何開(kāi)始保存自己的數(shù)據(jù)到磁盤(pán)上呢?

我的測(cè)試代碼如下:


  1. /************然后我來(lái)專門(mén)處理關(guān)機(jī)時(shí)收到的信號(hào)15**********************/
  2. #include <signal.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <unistd.h>

  6. void sighandler(int);

  7. int main(int argc, char ** argv)
  8. {
  9.   int x = 0;
  10.   signal(SIGTERM, sighandler);
  11.   signal(SIGQUIT, sighandler);
  12.   while(1) {
  13.     /*printf("now %d\n", x++);*/
  14.     usleep(100);
  15.   }
  16. }

  17. void sighandler(int sig)
  18. {
  19.     FILE * fp;
  20.     int x = 0;
  21.     fp = fopen("haltsignal.txt", "a+");
  22.     if(!fp)    return;
  23.     fprintf(fp, "signal.%d received, now begin to save data:\n", sig);
  24.     for(x = 1; x <= 5; x++)    {fprintf(fp, "save data.%d\n", x); fflush(fp);}
  25.     fclose(fp);
  26. }

復(fù)制代碼


當(dāng)這個(gè)程序運(yùn)行起來(lái),在另一個(gè)終端輸入reboot命令,然后再看haltsignal.txt卻沒(méi)有內(nèi)容。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2006-09-01 13:58 |只看該作者
SIGQUIT 是當(dāng)鍵盤(pán)要求停止執(zhí)行時(shí),CTRL+\,則會(huì)產(chǎn)生此信號(hào)。 執(zhí)行reboot是否產(chǎn)生此信號(hào)就不知道了。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2006-09-01 14:52 |只看該作者
你的程序收不到這個(gè)信號(hào), 自然不可能有所反映了
寫(xiě)一個(gè)服務(wù), 關(guān)機(jī)時(shí)給你的程序發(fā)個(gè)信號(hào).

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2006-09-02 03:00 |只看該作者
原帖由 blue_stone 于 2006-9-1 14:52 發(fā)表
你的程序收不到這個(gè)信號(hào), 自然不可能有所反映了
寫(xiě)一個(gè)服務(wù), 關(guān)機(jī)時(shí)給你的程序發(fā)個(gè)信號(hào).

一般發(fā)行版都有在關(guān)機(jī)指令前先kill -1 的動(dòng)作,所以這個(gè)程序應(yīng)該是可以收到SIGTERM信號(hào)的

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2006-09-02 06:06 |只看該作者
用 syslog 在 signal handle 里記錄,重啟后看記錄文件確定是否調(diào)用過(guò)。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
6 [報(bào)告]
發(fā)表于 2006-09-02 08:29 |只看該作者
不知道你用的是什么發(fā)行版,
我覺(jué)得最穩(wěn)妥的方法不是加什么 SIGTERM,
而是在 /etc/rc3.d/ 里面加 K??* 腳本,
K 打頭的腳本在重啟或者是關(guān)機(jī)的時(shí)候,會(huì)被 /etc/rc.d/rc 腳本自動(dòng)調(diào)用。
這樣你就有機(jī)會(huì)保存你的數(shù)據(jù)。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2006-09-02 09:35 |只看該作者
在 /etc/rc0.d 和 /etc/rc6.d 中放 S 開(kāi)頭的腳本比較好。

如無(wú)意外:
/etc/rc0.d 包含關(guān)機(jī)腳本
/etc/rc6.d 包含重啟腳本
S:?jiǎn)⒂?br />
[ 本帖最后由 x2 于 2006-9-2 09:38 編輯 ]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
8 [報(bào)告]
發(fā)表于 2006-09-02 09:39 |只看該作者
原帖由 x2 于 2006-9-2 09:35 發(fā)表
在 /etc/rc0.d 和 /etc/rc6.d 中放 S 開(kāi)頭的腳本比較好。

如無(wú)意外:
/etc/rc0.d 包含關(guān)機(jī)腳本
/etc/rc6.d 包含重啟腳本

按照 SysV 的設(shè)計(jì)思路和規(guī)范,是應(yīng)該加 K* 腳本而不是 S* 腳本。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2006-09-04 12:52 |只看該作者
感謝x2 和 flw 的提示,本人已經(jīng)試驗(yàn)成功!

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2006-09-04 13:00 |只看該作者
首先,各位查看一下自己的/etc/inittab看看這:

# The default runlevel.
id:2:initdefault:

當(dāng)然,大家知道這是當(dāng)前運(yùn)行級(jí)別。比如我這里是運(yùn)行級(jí)別為2

然后,編寫(xiě)這樣一個(gè)測(cè)試腳本/etc/init.d/my-start-stop,內(nèi)容如下:

  1. #! /bin/sh
  2. set -e

  3. # /etc/init.d/my-start-stop: start and stop test

  4. case "$1" in
  5.   start)
  6.         echo -n "Starting my-start-stop server"
  7.         echo ""
  8.         sleep 10
  9.         ;;
  10.   stop)
  11.         echo -n "Stopping my-start-stop server"
  12.         echo -n ""
  13.         sleep 10
  14.         ;;
  15.   *)
  16.         echo "Usage: /etc/init.d/my-start-stop {start|stop}"
  17.         exit 1
  18. esac

  19. exit 0
復(fù)制代碼

然后在當(dāng)前運(yùn)行級(jí)別所屬目錄/etc/rc2.d里面創(chuàng)建啟動(dòng)鏈接:
ln -s /etc/init.d/my-start-stop /etc/rc2.d/S70my-start-stop

在/etc/rc0.d目錄里面創(chuàng)建關(guān)閉鏈接:
ln -s /etc/init.d/my-start-stop /etc/rc0.d/K11my-start-stop


輸入halt -p命令關(guān)機(jī)看看吧,肯定能看到屏幕提示:
“Stopping my-start-stop server”
然后等待10秒鐘。

再開(kāi)機(jī)肯定會(huì)看到屏幕提示:
“Starting my-start-stop server”

如果大家感興趣可以看一下我之前發(fā)的貼“Linux下XWindow系統(tǒng)啟動(dòng)腳本分析”
http://72891.cn/viewthread.php?tid=721285&highlight=zhoulifa
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP