FILE*
使用するタイプが欲しいのですがfprintf
。を返す代わりにfdopen
を取得するために使用する必要があります。しかし、とで同じことができますか?(私は使用したことがありません)FILE*
open
int
fdopen
open
fdopen
私は同じことをしたいですfdopen
:
open("my_file", 0_CREAT | O_RDWR | O_TRUNC, 0644);
fdopen
以前にによって返される可能性のあるファイル記述子を取得するopen
ため、問題はありません。
ファイルopen
が記述子を取得し、次にfdopen
その記述子を取得します。
fdopen
read
および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の指定など)。
マニュアルページを参照してください。