共有メモリモード:物理メモリの一部を取り、それを複数のプロセスとして共有します。
共有メモリは、プロセス間でデータを共有するための最速の方法で、プロセスは共有メモリ領域にデータを書き込みます。
共有メモリの実装手順:
まず、共有メモリを作成し、shmget関数を使用します。
次に、共有メモリをマップし、作成した共有メモリを特定のプロセススペースにマップします。shmat関数を使用します。
共有メモリモード:物理メモリの一部を取り、それを複数のプロセスとして共有します。
共有メモリは、プロセス間でデータを共有するための最速の方法で、プロセスは共有メモリ領域にデータを書き込みます。
共有メモリの実装手順:
まず、共有メモリを作成し、shmget関数を使用します。
次に、共有メモリをマップし、作成した共有メモリを特定のプロセススペースにマップします。shmat関数を使用します。
void * shmat(int shmid、const void * shmaddr、int shmflg)< Br>
msqid:共有メモリ識別子
shmaddr:共有メモリがプロセスメモリアドレスのどこにあるかを指定し、カーネルに独自の適切なアドレス位置を決定させるには直接NULLを指定します。
shmflg:SHM_RDONLY読み取り専用モード、その他は読み取り/書き込みモード
関数の戻り値:正常に終了した場合は、接続されている共有メモリアドレスを返し、エラーの場合は-1を返します。共有メモリ接続shmdtを切断します。
intshmdt(const void * shmaddr)
機能:受信shmaddr、接続共有メモリの開始アドレス。 0、エラーは-1を返します。エラーの原因はエラーにあります。
親子プロセス間通信の例:
#include
#include
#include
#include
#include
#include
int main(int argc、char ** argv){
if(argc< 2){//共有データの入力が必要です
printf(「共有データを入力してください。n」);
exit(-1);
}
intshmid;
shmid = shmget(0,1024、IPC_CREAT);
if(shmid == -1){//共有メモリの申請に失敗しました。
printf(" creatinghare memory failed.n");
exit(-1);
}
if(fork()){//親プロセス間
char * p_shmaddr;
p_shmaddr = shmat(shmid、NULL、0); //親プロセス内のアドレスにマップする
memset(p_shmaddr、0、1024); //共有メモリを初期化する
strcpy(p_shmaddr、argv [1]); //共有データを共有メモリにコピーする
wait(NULL); ////子プロセスの終了を待つ
exit(0);
}
else {
sleep(2); //親プロセスがデータを書き込むのを待っている
char * c_shmaddr;
c_shmaddr = shmat(shmid、) NULL、0); //子プロセス内のアドレスに、具体的にはカーネルによってマップされます。
printf(" theshare data is:%sn"、c_shmaddr); //子プロセスは共有データを出力します
exit(0);
}
}
内の表示名 LSPPC-Lenny:1が間違っていますvnc4serverの起動後に次のエラーメッセージが表示されます。LSPPC-Lenny:〜#vnc4serverxauth:(stdin):1:
さまざまなLinux さて、赤い帽子Enterprise Editionは、比較的安全問題です。平均的なLinuxのバージョンについては、どのように我々は、システムの安全性を確保します。あるいは、ど
の比較のメリットは、オープンソースのLinuxシステムは、デスクトップまたはサーバ企業内の個々の態様は、非常に有望な結果があるかどうか、酔わせると言うことができます。デスクトップの個人的な側面は、Li
現在、非常に深刻なBashの脆弱性がインターネット上に公開されており、ハッカーがリモートコマンドをサーバーに送信して個人情報を盗むことを容易に可能にします。記事はあ