FILE*使用するタイプが欲しいのですがfprintf。を返す代わりにfdopenを取得するために使用する必要があります。しかし、とで同じことができますか?(私は使用したことがありません)FILE*openintfdopenopenfdopen
私は同じことをしたいですfdopen:
open("my_file", 0_CREAT | O_RDWR | O_TRUNC, 0644);
fdopen以前にによって返される可能性のあるファイル記述子を取得するopenため、問題はありません。
ファイルopenが記述子を取得し、次にfdopenその記述子を取得します。
fdopenreadおよびwrite操作をサポートするあらゆる種類の記述子を使用して、ユーザースペースでバッファリングされたストリームを作成するだけです。
fdopen()ファイル記述子を使用してポインタをファイルします。このfdopen()関数は、ストリームをファイル記述子に関連付けます。ファイル記述子は、、、、、またはから取得さopen()れます。これらはファイルを開きますがdup()、構造ストリームへのポインタを返しません。ストリームは、ほとんどすべてのstdioライブラリルーチンに必要な入力です。creat()pipe()FILE
FILE* fp = fdopen(fd, "w");
このサンプルコードは、使用したいときにさらに役立つ場合がありますfprintf()。
int main(){
int fd;
FILE *fp;
fd = open("my_file",O_WRONLY | O_CREAT | O_TRUNC);
if(fd<0){
printf("open call fail");
return -1;
}
fp=fdopen(fd,"w");
fprintf(fp,"we got file pointer fp bu using File descriptor fd");
fclose(fp);
return 0;
}
知らせ:
fclose()、fdも閉じられます。ref:このfclose()関数はclose()、streamが指すストリームに関連付けられているファイル記述子に対してを実行します。 以前にファイルのファイル記述子を取得していない場合は、を使用してくださいfopen。
FILE* file = fopen("pathtoyourfile", "w+");
fopenシステムコール(オープン)ではなく、stand-library-callsを使用していると考えてください。したがって、それほど多くのオプションはありません(access-control-valuesの指定など)。
マニュアルページを参照してください。