オープン・ファイル記述子を使用して、親と子の共有ファイル------プロセス間通信の完了。
/ * ** fork_share_fd.c ** * / 書式#include <stdio.hに> する#include <unistd.h> 書式#include < 文字列の.h> の#include <stdlib.h>に含ま 書式#include <fcntl.h> 書式#include <sysの/wait.h> INTメイン(ボイド) { int型FD1、FD2。pid_t pidを。 チャー BUF [ 1024 ]。 char * strの= " ---------親、子プロセスで共有FD ----- \ nのテスト" ; PID = フォーク()。 もし PID(< 0 ){ perrorは(" フォークエラー" )。 出口(1 )。 } そう であれば(PIDの== 0 ){ FD1 =オープン(" test.txtの" 、O_RDWR)。 もし(FD1 < 0 ){ perrorは(" オープンエラー" )。 出口(1 )。 } 書き込み(FD1、STR、strlenを(STR))。 printf(" 子供がオーバー書いた...を\ n " ); } 他{ FD2 =オープン(" test.txtの" 、O_RDWR); IF(FD2 < 0 ){ perrorは(" オープンエラー" ); 出口(1 ); } SLEEP(1); // 子プロセスがデータの書き込みを行うことを確認 INT LENを=読み取る(FD2、BUF、はsizeof (BUF)); (STDOUT_FILENO、BUF、LEN)を書き込み、 待機(NULL); } 戻り 0 ; }
結果:
ubuntu1604 @ Ubuntuの:〜/ wangqinghe / linuxの/ 20190806 $ ./fork_share_fd
子供はオーバー書きました...
---------親、子プロセス内の共有FDのためのテスト-----