3

ヘッダー ファイル<fcntl.h><unistd.h>. 彼らの手順の動作をテストするために小さな例を作成しましたが、期待どおりに機能しませんでした。これが私のコードです:

#include <fcntl.h>
#include <unistd.h>

int main() {
  int in=open( "test.in", O_RDONLY, S_IREAD );
  int *a=new int[ 10 ];
  read( in, a, 10 );
  int out=open( "test.out", O_WRONLY, S_IWRITE );
  write( out, a, 10 );
  close( in ); close( out );
  return 0;
}

入力ファイルは次のとおりです。1 2 3 4 5 6 7 8 9 10

プログラムは正常にコンパイルされましたが、出力ファイルは作成されませんでした。私のコードの何が問題なのか誰か教えてもらえますか? 前もって感謝します。

4

3 に答える 3

2

2 番目のファイルを開くために使用するフラグO_WRONLYは、このファイルが存在しない場合、出力ファイルを作成しません。O_CREATEまたは などの他のフラグを試してくださいO_APPEND。このリンクは、いくつかのフラグを使用してファイルの作成と書き込み中の動作を処理する場合に役立つはずです。頑張ってください=)

于 2012-12-22T14:06:52.867 に答える
0

オープングループから

#include <fcntl.h>
...
int fd;
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
char *filename = "/tmp/file";
...
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, mode);
...

コードと比較するだけです。

于 2012-12-22T14:05:27.383 に答える