忍者ブログ
趣味+メモ用のブログです。 GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
[73] [72] [71] [70] [69] [68] [67] [66] [65] [64] [63]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

シリアル出力が遅いので、標準出力をFIFOに渡して、
別プロセスでシリアル出力するサンプルを作成


cat -n mkfifo.c
     1  #include <stdio.h>
     2  #include <sys/types.h>
     3  #include <sys/stat.h>
     4  #include <sys/types.h>
     5  #include <sys/stat.h>
     6  #include <fcntl.h>
     7
     8
     9  #define FIFOFILE "./fifo"
    10
    11  int main()
    12  {
    13
    14  pid_t pid = 0;
    15
    16  if ( mkfifo( FIFOFILE , 0777 ) ) {
    17          perror( "mkfifo" );
    18  }
    19
    20  pid = fork();
    21  if ( pid < 0 ) {
    22          perror( "fork" );
    23  } else if ( pid == 0 ) {
    24          /* 子プロセス */
    25          int fd;
    26
    27          fd = open( FIFOFILE, O_SYNC | O_RDONLY ) ;
    28          if ( fd < 0 ) {
    29                  perror( "open " FIFOFILE );
    30          } else {
    31                  char buff[256];
    32                  int len;
    33                  while ( 1 ) {
    34                          len = read( fd, buff, sizeof(buff) );
    35                          if ( len > 0 ) {
    36                                  write( 1, " < ", 3 );
    37                                  write( 1, buff, len );
    38                                  write( 1, " > ", 3 );
    39                          }
    40                  }
    41                  close( fd );
    42          }
    43
    44  } else {
    45          int fd;
    46
    47          fd = open( FIFOFILE, O_SYNC | O_WRONLY ) ;
    48          if ( fd < 0 ) {
    49                  perror( "open " FIFOFILE );
    50          } else {
    51
    52                  dup2( fd, 1 );
    53
    54                  while( 1 ) {
    55                          printf( "test pid:%d", getpid() );
    56                          fflush( stdout );
    57                          sleep( 1 );
    58                  }
    59
    60                  close( fd );
    61          }
    62          return 0;
    63  }
    64
    65  return 0;
    66
    67  }
PR


忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
一乗寺 又兵衛
性別:
男性
職業:
コンパイル
趣味:
コンパイル
バーコード
ブログ内検索