| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「C 端末とのやりとり」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==C 端末とのやりとり==
+
==[[C 端末とのやりとり]]==
 
[[Programming C]] |  
 
[[Programming C]] |  
*programの中で、userと対話する部分をredirectされないようにし、その他の入出力をredirectするには、userと対話する部分を stdout や stderr から切り離す必要がある。
+
*programの中で、userと対話する部分をredirectされないようにし、[[その他]]の入出力をredirectするには、userと対話する部分を stdout や stderr から切り離す必要がある。
 
*具体的には、端末に対して直接読み取りや書き込みを行う。
 
*具体的には、端末に対して直接読み取りや書き込みを行う。
*Linux は multi user systemなので、通常は複数の端末が接続されている。
+
*[[Linux]] は multi user systemなので、通常は複数の端末が接続されている。
*Linux と UNIX では、つねに現在の端末を意味する /dev/tty deviceが用意されている。
+
*[[Linux]] と UNIX では、つねに現在の端末を意味する /dev/tty deviceが用意されている。
  
 
  #include <stdio.h>
 
  #include <stdio.h>

2020年2月16日 (日) 04:23時点における最新版

C 端末とのやりとり

Programming C |

  • programの中で、userと対話する部分をredirectされないようにし、その他の入出力をredirectするには、userと対話する部分を stdout や stderr から切り離す必要がある。
  • 具体的には、端末に対して直接読み取りや書き込みを行う。
  • Linux は multi user systemなので、通常は複数の端末が接続されている。
  • Linux と UNIX では、つねに現在の端末を意味する /dev/tty deviceが用意されている。
#include <stdio.h>
#include <stdlib.h>

int main()
{
  FILE *input;
  FILE *output;    
  
  input = fopen("/dev/tty", "r");  
  output = fopen("/dev/tty", "w");  
  fprintf(output, "Please input some charactor. 'q':end.\n");
  char c;
  while((c = fgetc(input)) != 'q') {
    printf("%c", c);
  }
  fprintf(output, "end.\n");
  exit(0);
}

この本からの覚書。