コピープログラムを作成しようとしています。これはlinuxのcp関数に似ています。 ./copy file1 file2を使用してファイルを正常にコピーできますが、何らかの理由でソースからのプレミッションがコピー先にコピーされません。誰もこれを行う方法を知っていますか?例とコードを以下に示します:)Unix:Cで元の許可を得てファイルをコピーしてください
私のファイルとそのオリジナルの許可。
ファイルは正常にコピーされましたが、権限はコピーされませんでした。
#define buff_s 4096
#define mod 0644
void printError(char *, char *);
main(int ac, char *txts[])
{
int input, output, n_chars;
char buf[buff_s];
struct stat file1;
struct stat file2;
stat(txts[1], &file1);
stat(txts[2], &file2);
if ((input=open(txts[1], O_RDONLY)) == -1)
printError("error", av[1]);
if ((output=creat(txts[2], mod)) == -1)
printError("error", txts[2]);
'read()'と 'write()'は 'int'ではなく' ssize_t'を返すことにも注意してください。彼らは同じではありません。 –
ありがとうございました。 – mmm
Garg365、あなたが提供する方法を試してみましょう。私はそれもうまくいくと思います。 – mmm