Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linuxメイン制御プログラム

Linuxメイン制御プログラム

  
        

6.1、Linuxプログラムの全体的な考え方

initプロセスは、Linuxカーネルによって開始される最初のプロセスです。それ以降のすべてのプロセスの開始者です。このシステムのinitプロセスはrcプロセスへのリンクであるため、rcプロセスがメインプロセスで、最初にカーネルに入るプログラムが実行され、最初にメインプロセスプログラムで他の子プロセスが開始されます。待機処理シグナルを中断します。

子プロセスはメインプロセスに通知し、メインプロセスは特定のシグナルを受け取り、何かをするために何かをするか、他の子プロセスを開始または終了します。さらに、一部のプロセスはソケットソケットを介して通信します。

プロセスによっては、プログラムが1回実行されて終了するものもあります。

6.1、rcプログラム

メインシーケンスはrc、init、ip-up、ip-down、dtu-dns、start_watchdog、start-lan、stop-lan、start_timerなどです。プロセスはrcへの接続です。これらのプロセスを実行するとき、rcプロセスはプロセスパラメータに基づいて実行するハンドラを決定します。

initインジケータが実行されると、RCメインループ実行に入ります。

6.3、初期化ランタイム環境

メインループには、初期化の以下の部分が含まれます。

1、システム初期化

マウントシステム関連ディレクトリ

すべてのデバイスノードの生成

フラッシュパーティション関連ディレクトリのマウント

パラメータファイルへのリンクの作成

関連ディレクトリの作成

デバイスパラメータの初期化

コンソールの初期化

カーネルモジュールのロード

タイムゾーンの設定、システム時刻、ハードウェアの同期

組み込みのハードウェアウォッチドッグの起動

外部ハードウェアウォッチドッグブート

2、GPIO初期化

関連するインジケーターを消し、モジュールの電源を入れ、サブボードの電源を切ります。

未使用のGPIOを消します

ドーターボードの電源を入れます。

各モジュールを初期化します。

3. LANの電源を入れます。

4.信号を初期化します。

信号を初期化します。

登録信号

5、設定ファイルの初期化

PPPダイヤリング関連の設定ファイル

DTUパラメータ設定ファイル

ネットワークコントローラパラメータ設定ファイル

電話またはSMSトリガー設定ファイル

ICMP検出設定ファイル

DNS検出設定ファイル

DDNSパラメータ設定ファイル

メンテナンスチャネルパラメータ設定ファイル

6.4、さまざまなプロセスの実行

1. TCPローカルサーバを開く

図:

図6.2ローカルサーバーのプロセスフローチャート

2、さまざまなサービスを開く

Httpdサーバーを開く

DTUクライアント接続を開く< Br>

Dhcpdサービスが有効になっています

Telnetサービスが有効になっています

重複プロセス数の監視が有効になっています

トラフィック統計が有効になっています

6.5 PPPDプロセスが正しいことを確認します

を実行する1. pppdを実行する前に、まずモジュールインタフェースを正常に開くことができるかどうかを確認し、例外が発生した場合はシステムを再起動します。

2. pppdを実行した後、1秒ごとに/tmp /ppp /linkファイルを生成するかどうかを判断し、タイムアウト時間内に生成されない場合は、もう一度ダイヤルします。

3、モジュールをリセットするためにpppdを再実行する前に、最後に実行されたpppdが終了しないようにpppd接続を切断してください。

4、pppdのダイヤルアップが正常にネットワークテスト機能を開き、pppd自体がドロップを検出できないのを避けるため。

6.6、ループ処理への実行

メインプログラムが初期化された後、関連サービスはメインループ処理に入り始め、メインループは回線をダイヤルし始め、オンライン処理の後、最後にアイドル状態になりますイベントシグナルを待ちます。メインループは主にPPPDとWANの異常の有無を監視しており、異常があれば該当する処理を実行します処理の流れは次の図のようになります。
6.3メインプロセスのメインループのフローチャート

フローチャートからわかるように、メインループはステートマシンです。プロセスがシグナルを送信すると、シグナル処理関数は状態値を変更し、メインループはIDLE状態からジャンプしてRESTARTまたはSTOP状態に戻り、再びループして、最後にアイドル状態に安定します。 PPPDがオフラインになったときにip-downプロセスを実行するのが一般的で、プロセスはメインプロセスにシグナルを送信し、メインプロセスはRESTART状態になります。メインプログラムはダイヤル処理を再実行します。

6.7。シグナルの使用

シグナルは、特定の状況に応じてUNIXおよびLinuxシステムによって生成されるイベントであり、シグナルを受信したプロセスはそれに応じて何らかのアクションを実行します。通常、シグナルはエラーによって生成されます。しかし、プロセス間の通信や動作の変更を行う方法として、プロセス間で明示的に送信することもできます。信号の生成は生成と呼ばれ、信号はキャプチャと呼ばれます。

ヘッダーファイルをインクルードする必要があります。#include< signal.h>

シグナルの使用方法は次のとおりです。

1.シグナルを登録します。

例:signal(SIGHUP、rc_signal);

2.シグナル処理関数。

static void rc_signal(int sig)

{

……

if(sig == SIGHUP){

Syslog(6、「シグナリングRESTART \\ n」);

signal = RESTART;

}

……

}

3.シグナルの送信

メインプロセスへのシグナルの送信:kill(1、SIGHUP);

Copyright © Windowsの知識 All Rights Reserved