• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:write関数でファイルディスクリプタfile(fp1)に出力されません)

ファイルディスクリプタに出力されない問題の原因は何でしょうか?

このQ&Aのポイント
  • Windows2000でCygwinを使用している場合、write関数を使用してファイルディスクリプタに出力する際に問題が発生することがあります。
  • 上記のコードでは、fp1とfp2という2つのファイルポインタを作成し、file.txtに書き込むために使用しています。
  • しかし、write関数を使用してファイルディスクリプタに出力する際には、ファイルポインタではなく、ファイルディスクリプタの数値を指定する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • drmoreau
  • ベストアンサー率41% (33/79)
回答No.2

write関数の使い方が間違っているのでは。 またわざわざfopenで開いてfilenoを使ってファイルハンドル番号を取得する意味もよくわかりません。無駄ではないですか。

mk278
質問者

お礼

有難うございます。 > write関数の使い方が間違っているのでは。 $ cat test6.c #include<stdio.h> int main(void){ FILE *fp1,*fp2; fp1=fopen("file.txt","w"); fp2=fopen("file.txt","a"); printf("fp1->fd=%d\n",fileno(fp1)); printf("fp2->fd=%d\n",fileno(fp2)); write(fileno(fp1),"first\n",6); write(fileno(fp2),"second\n",7); fclose(fp1); return 0; } $ gcc -o test6 test6.c $ test6est6.ctxtest6.c fp1->fd=3 fp2->fd=4 $ gcc -o test6 test6.c $ test6 fp1->fd=3 fp2->fd=4 $ cat ./file.txt first second となりました。 > またわざわざfopenで開いてfilenoを使ってファイルハンドル番号を取得する意味も > よくわかりません。無駄ではないですか。 そういわれればそうですね。

その他の回答 (1)

  • drmoreau
  • ベストアンサー率41% (33/79)
回答No.1

write関数の使い方が間違っているのでは。 またわざわざfopenで開いてfilenoを使ってファイルハンドル番号を取得する意味もよくわかりません。無駄ではないですか。

関連するQ&A