• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Onway

            我是一只菜菜菜菜鳥...
            posts - 61, comments - 56, trackbacks - 0, articles - 34

            2011-12-17 第十三章 守護進程
            第一節 引言
            1,守護進程通常沒有控制終端。

            第二節 守護進程的特征
            1,所有用戶層守護進程都是進程組的組長進程以及會話的首進程,而且是這些進程組和會話中的唯一進程。
            2,大多數守護進程的父進程是init進程。

            第三節 編程規則
            1,六個進程規則使一個普通進程被正確初始化成一個守護進程。

            第四節 出錯記錄
            1,對于守護進程,需要一個集中的守護進程出錯記錄設施。
            2,該設施的接口是syslog函數。

            第五節 單實例守護進程
            1,為了正常運作,某些守護進程實現為單實例的,也就是在任一時刻只運行該守護進程的一個副本。
            2,文件鎖和記錄鎖機制是一種方法的基礎,該方法用來保證一個守護進程只有一個副本在運行。

            第六節 守護進程慣例
            1,如果守護進程使用鎖文件,那么該文件通常存放在/var/run目錄中。
            2,若守護進程支持配置選項,那么配置文件通常存放在/etc目錄中。
            3,守護進程可用命令行啟動,但通常它們是由系統初始化腳本之一啟動的。如果在守護進程終止時,應當自動重新啟動它,則可在/etc/inittab中為該守護進程包括_respawn記錄項。
            4,為了避免守護進程可能需要停止來重新讀取配置文件,可使守護進程捕捉SIGHUP信號。

            第七節 客戶進程-服務進程模型
            1,守護進程常常用作服務器進程。

            第八節 小結

            posted @ 2011-12-18 12:28 Onway 閱讀(243) | 評論 (0)編輯 收藏

                 摘要: 第七節 取消選項
            1,線程的可取消狀態和可取消類型這兩個屬性影響著線程在響應pthread_cancel函數調用時鎖呈現的行為。
            2,可取消類型分為異步取消和延遲取消,使用異步取消時,線程可以在任意時刻取消,而不是非得遇到取消點才能被取消。
            3,當線程處于延遲取消類型的情況下,可以調用pthread_setcancelstate修改它的可取消狀態。
            4,取消點是線程檢查是否被取消并按照取消請求進行動作的一個位置。
            5,當可取消狀態設置為PTHREAD_CANCEL_DISABLE時,對pthread_cancel的調用不會殺死進程,相反,取消請求對這個線程來說處于未決狀態。
            6,可以調用pthread_testcancel函數在程序中自己添加取消點。
              閱讀全文

            posted @ 2011-12-16 12:41 Onway 閱讀(482) | 評論 (0)編輯 收藏

                 摘要: 第十二 內容轉載引用自:
            字符集: http://baike.baidu.com/view/51987.htm
            字符編碼:http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
            ASCII: http://baike.baidu.com/view/15482.htm
            EASCII:http://zh.wikipedia.org/wiki/EASCII
            http://zh.wikipedia.org/wiki/ISO/IEC_8859
            GBxxxx系列,BIG5:
            http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
            UCS&UNICODE:http://zh.wikipedia.org/wiki/通用字符集
            http://zh.wikipedia.org/wiki/Unicode
            UTF-x系列:http://zh.wikipedia.org/wiki/UTF-8  閱讀全文

            posted @ 2011-12-04 14:39 Onway 閱讀(1612) | 評論 (1)編輯 收藏

                 摘要: 做這些筆記的時候是一年前多了。當時還在做著ACM,學這些似乎只是抱著充實自己的心態,當時最想的似乎就是看完整本書,但最終還是在面向對象的部分停下來了。現在很多東西都忘了,畢竟這樣學而沒有實際使用,肯定很容易忘的。可能當時也是出現了這么個想法而停下來的吧,至少應該是其中一個原因。這份筆記似乎在硬盤里丟失過一次,最后在金山快盤里找回來的。2011-12-4  閱讀全文

            posted @ 2011-12-04 14:12 Onway 閱讀(715) | 評論 (0)編輯 收藏

                 摘要: 第三節
            1,signal在linux的聲明
            typedef void (*__sighandler_t) (int);
            extern __sighandler_t signal (int __sig, __sighandler_t __handler)
            __THROW;
            2,SIG_ERR,SIG_DFL和SIG_IGN的定義
            #define SIG_ERR ((__sighandler_t) -1) /* Error return. */
            #define SIG_DFL ((__sighandler_t) 0) /* Default action. */
            #define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */

            懷疑書上有錯:
            ”如果查看系統的頭文件,則很可能會找到下列形式的聲明:
            #define SIG_ERR (void (*)())-1
            #define SIG_DFL (vo  閱讀全文

            posted @ 2011-12-04 13:48 Onway 閱讀(415) | 評論 (0)編輯 收藏

            一,使用數據空間:
            環境:
            宿主機:ubuntu
            步驟:
            1,進入虛擬機系統(將虛擬機開機),選擇:設備->安裝增強功能
            (最好先在網上下載一個VBoxGuestAdditions.iso的增強功能文件,放到宿主機的/usr/share/virtualbox目錄下)
            2,安裝完后就將虛擬機關機了,選擇:控制->設置->數據空間,彈出的界面右側有一個帶加號的文件夾圖標,鼠標移動過去有提示,添加數據空間。
            3,彈出的“添加數據空間”界面里,數據空間位置選擇一個在宿主機上的文件夾,數據空間名稱隨便,例如sharedata。選上底下的auto-mount,是否只讀,你喜歡。
            4,確定后開機就行了。
            數據空間在虛擬機的位置是/media/sf_數據空間名稱,如果是XP的虛擬機,則可以看到一個額外的盤符。
            5,注意在虛擬機(linux)中虛擬空間文件夾是所有者是root,所屬組是vboxsf,這意味著一般用戶是不能訪問的,將你的賬戶添加到其所屬組吧。
            具體參見用戶手冊,Guest Additions->Shared folders章節。


            二,修正虛擬機的屏幕大小:
            XP直接調整分辨率
            ubuntu還沒試成功


            三,導入導出虛擬電腦:
            按照向導操作即可。問題是:虛擬電腦上的驅動會不會因為兩臺宿主機硬件的不同而出問題。應該不會吧,硬件都是虛擬出來的。
            因為導入的XP進不了系統,總是自動重啟,導入的ubuntu屏幕大小太大(原虛擬機是在19寸的臺式電腦,導入到14寸的筆記本),以為驅動出了問題。
            后來重裝XP才發現,裝完后藍屏(原來導入的XP可能也是這個問題而進不了系統),按照網上教程搞好后,還是要自行調整分辨率。
            所以覺得導入導出虛擬電腦,應該不用擔心驅動問題。



            四,宿主機和虛擬機通信并且虛擬機能夠上網
            宿主機:ubuntu 11.10 使用adsl撥號上網
            虛擬機:centos 6.0

            1,宿主機使用ifconfig可以查看到有三個網絡接口:eth0,lo,ppp0,其中eth0是沒有地址的。
            2,宿主機編輯/etc/network/interfaces,修改
            auto eth0
            iface eth0 inet static
            address 192.168.1.1
            network 192.168.1.0
            netmask 255.255.255.0
            broadcast 192.168.1.255
            然后重啟網絡:
            sudo /etc/init.d/networking restart
            3,virtualbox在虛擬機中虛擬兩個網卡,一個使用NAT,一個使用Bridged Adapter
            4,虛擬機中編輯/etc/sysconfig/eth0
            DEVICE=eth0
            ONBOOT=yes
            BOOTPROT=dhcp
            NAME=net    //不知道這個是做什么的
            HWADDR=        //必須的,對照virtualbox中使用NAT方式的網卡MAC地址
            5,虛擬機中編輯/etc/sysconfig/network-scripts/ifcfg-eth1
            DEVICE=eth1
            ONBOOT=yes
            BOOTPROT=static
            IPADDR=192.168.1.2
            NETMASK=255.255.255.0
            NAME=bridge
            TYPE=Ethernet
            HWADDR=        //必須的,對照virtualbox中使用bridged adapter的網卡mac地址
            6,添加網絡管理服務:
            chkconfig NetworkManager on    
            chkconfig network on
            service network restart        //重啟網絡

            posted @ 2011-11-22 15:58 Onway 閱讀(504) | 評論 (0)編輯 收藏

            /*
             * http.c by Onway 2011-11-14
             * 1,間隔1秒的兩次connect避免瞬間造成的錯誤
             * 2,網絡讀寫超時限制參考自《UNIX環境高級編程》第二版中文版程序清單10-8,
             * 由于程序是單線程,避免進程堵塞。
             * 3,返回值說明
             *     0 正確返回
             *     1 網絡連接失敗
             *     2 網絡IO超時
             *     3 時鐘注冊失敗
             
            */
            #include 
            "global.h"
            #include 
            <sys/types.h>
            #include 
            <sys/socket.h>
            #include 
            <netinet/in.h>
            #include 
            <arpa/inet.h>
            #include 
            <unistd.h>
            #include 
            <stdlib.h>
            #include 
            <setjmp.h>

            #define PORT 80 
            #define BUFFSIZE 10086

            static void sig_alrm(int);
            static jmp_buf env_alrm;

            int QueryWord(const GString *word,const GString *ip,
                    GString 
            *gstrHtml)
            {
                g_string_erase(gstrHtml,
            0,-1);

                
            /*    http 請求    */
                GString 
            *request = g_string_new("GET /search?q=");
                g_string_append(request,word
            ->str);
                g_string_append(request,
            "\
            &ue=utf8&keyfrom=dict.index HTTP/1.1\r\n\
            Host: dict.youdao.com\r\n\
            Connection: close\r\n\
            \r\n
            ");

                
            /*    網絡地址    */
                
            struct sockaddr_in address;
                address.sin_family 
            = AF_INET;
                address.sin_addr.s_addr 
            = inet_addr(ip->str);
                address.sin_port 
            = htons(PORT);

                
            /*    網絡連接    */
                
            int socketfd = socket(AF_INET,SOCK_STREAM,0);
                
            if(connect(socketfd,(struct sockaddr *)&address,sizeof(address)) != 0)
                {
                    sleep(
            1);
                    
            if(connect(socketfd,(struct sockaddr *)&address,sizeof(address)) != 0)
                    {

                        g_string_free(request,TRUE);
                        
            return 1;
                    }
                }
                
                
            /*    信號注冊    */
                
            if(signal(SIGALRM,sig_alrm) == SIG_ERR)
                {
                    g_string_free(request,TRUE);
                    close(socketfd);
                    
            return 3;
                }
                
            if(setjmp(env_alrm) != 0)
                {
                    g_string_free(request,TRUE);
                    close(socketfd);
                    
            return 2;
                }
                
                
            /*    網絡IO    */
                alarm(
            3);
                write(socketfd,request
            ->str,request->len);

                
            char buf[BUFFSIZE];
                
            int n;
                
            while( (n = read(socketfd,buf,BUFFSIZE)) > 0 )
                    g_string_append_len(gstrHtml,buf,n);
                alarm(
            0);

                
            /*    正常返回    */
                g_string_free(request,TRUE);
                close(socketfd);
                
            return 0;
            }
            static void sig_alrm(int signo)
            {
                longjmp(env_alrm,
            1);
            }

            posted @ 2011-11-22 11:55 Onway 閱讀(649) | 評論 (0)編輯 收藏

                 摘要: 1,帶有滾動條的多行文本框
            只要gtk_scrolled_window_new生成一個滾動窗口,在其上加上textview控件即可gtk_container_add,特點是當textview足夠顯示的時候,滾動條不可見,否則自動產生(垂直和橫向),而且也隨著輸入一起下滾顯示。這個暫不知道怎么設置。
            GtkWidget *scroll = gtk_scrolled_window_new(NULL,NULL);
            GtkWidget *textview = gtk_text_view_new();
            gtk_container_add(GTK_CONTAINER(scroll),textview);

            textview總是要與一個textbuffer關聯:
            GtkTextBuffer *buffer = gtk_text_buffer_new(NULL);
            buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));


            2,控件焦點設置
            g  閱讀全文

            posted @ 2011-11-22 11:47 Onway 閱讀(1446) | 評論 (0)編輯 收藏

                 摘要: 由于UBUNTU裝了唯一的主分區,且無論如何也不能覆蓋掉,里面保存了我一個多月的心血,只能在40G的數據備份分區里分出20G的邏輯分區給WIN7,當然最擔心的是WIN7會改寫引導記錄,自己也毫無經驗。百度了一會,發現都是說先裝的WIN7,決定還是先把WIN7搞上去吧。

            放入WIN7的系統盤,在選擇安裝分區的時候,給個20G的邏輯分區給WIN7,丫的死活不要,說是啟動程序無法創建新的分區,也無法定位現有系統分區。

            又百度去,有說WIN7能裝在邏輯分區,也有說不能的,還有說這個情況是設置了光驅第一啟動,哥還真傻冒的讓硬盤第一啟動,然后光驅放入系統盤,這下直奔UBUNTU去了。  閱讀全文

            posted @ 2011-11-22 11:17 Onway 閱讀(3157) | 評論 (3)編輯 收藏

                 摘要: xp下用ISO文件安裝ubuntu(該方法網上已有,但與自己實踐的稍有差別,特此紀念)
            注意:網上的方法似乎是從9.04開始,我用的版本直接就是10.04.1 desktop i386。
            二:
            將單系統的ubuntu裝回windows
            我這不是閑著沒事做,而是確實需要。
            四:
            情人節網絡詭異  閱讀全文

            posted @ 2011-11-22 11:10 Onway 閱讀(318) | 評論 (0)編輯 收藏

            僅列出標題
            共6頁: 1 2 3 4 5 6 
            99久久久精品| 国内精品人妻无码久久久影院 | 99久久精品影院老鸭窝| 久久精品99久久香蕉国产色戒 | 国产—久久香蕉国产线看观看| 精品久久人人做人人爽综合| 性做久久久久久久久久久| 久久w5ww成w人免费| 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲国产精品嫩草影院久久| 亚洲精品国精品久久99热一| 国产成人久久777777| 久久精品亚洲日本波多野结衣| 国产精品热久久毛片| 久久综合综合久久综合| 久久久久综合国产欧美一区二区| 亚洲AV成人无码久久精品老人| 久久艹国产| 久久综合中文字幕| 久久国产精品99国产精| 欧美亚洲国产精品久久久久| 精品久久人人妻人人做精品| 久久国产色AV免费观看| 久久久无码精品亚洲日韩京东传媒 | 久久中文精品无码中文字幕| 72种姿势欧美久久久久大黄蕉 | 久久无码人妻一区二区三区午夜| 久久久久99精品成人片牛牛影视| 丁香五月综合久久激情| 国产精品视频久久久| 97精品依人久久久大香线蕉97| 一个色综合久久| 99久久综合国产精品免费| 一本色道久久88综合日韩精品| 久久人搡人人玩人妻精品首页| 久久精品免费大片国产大片| 国产免费福利体检区久久| 久久99精品免费一区二区| 久久伊人精品青青草原日本| 亚洲v国产v天堂a无码久久| 日韩欧美亚洲综合久久影院Ds|