趣味+メモ用のブログです。
GNU/Linux関連、OSS関連情報、調査事項になるでしょうが、何を書くか分かりません。
× [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 |
カレンダー
カテゴリー
フリーエリア
最新コメント
最新記事
(05/02)
(01/25)
(01/15)
(12/04)
(12/01)
最新トラックバック
ブログ内検索
最古記事
(02/21)
(07/12)
(07/12)
(07/18)
(07/20) |