Unix 環境で使用できるプログラムをコーディングしようとしています。しかし、このようなことをするのはこれが初めてで、いくつかの点で混乱しています。私のコードは次のとおりです。
#include <unistd.h>
#include <stdio.h>
#define BUFFSIZE 4096
int main (int argc, char * argv[]){
int n;
char buf[BUFFSIZE];
if (argc != 2){
err_sys("usage a.out <pathname>");
}
if (access(argv[1], R_OK) == -1){
err_ret("access error for %s", argv[1]);
}
if (access(argv[2], R_OK) == 0){
printf("Would you like to overwrite (Y or N)? \n");
if(){
exit(0);
}
}
while ((n = read(STDIN_FILENO, buf, BUFFSIZE) > 0)){
if (write(STDOUT_FILENO, buf, n) != n){
err_sys("write error");
}
}
if (n < 0){
err_sys("read error");
}
close(STDOUT_FILENO);
close(STDIN_FILENO);
exit(0);
}
基本的に、open、read、write、close、および access を使用するプログラムを作成する必要があります。ただし、2 番目の引数 (ファイル名) が既に配置されている場合に、ユーザーに上書きするかどうかを確認する必要がある部分を実装する方法について、私は完全に混乱しています。
別名、これらのコード行:
if (access(argv[2], R_OK) == 0){
printf("Would you like to overwrite (Y or N)? \n");
if(){
exit(0);
}
ユーザーからの応答を取得する方法と、その状態がどうなるかは正確にはわかりません。
また、他のコードが間違っている場合は、お気軽にお知らせください。改善方法を教えてください。
ありがとうございました!
追加したばかり:
if (open(argv[1], O_RDONLY) < 0){
err_ret("open error for %s", argv[1]);
}