達成するためにcpコマンドのLinuxシステムのプログラミング

達成するためにcpコマンドのLinuxシステムのプログラミング

cpコマンドは、頻繁に、コマンドを使用したファイルをコピーし、その製造方法のアイデアは非常に直感的です。データファイルが読み出され、新しいファイルを作成し、そこにデータを書き込みます。これは思考の非常に従来の方法です。包括的なプログラムの作成に考えるように主な問題点は、それぞれの場合には完全に考慮されなければならない入力にあります。

近いファイルが共通のカーネル関数はまだオープン呼び出しで、書き込みデータを、ファイルを作成し、ファイルを開き、ファイルのデータを読み込む()、レコード生成()、読み()、書き込み()、クローズ()が完了します。

簡単なコマンドよりもコードを書く前に。

複数のエラーコマンドので、例えばcpコマンドに応じて発生する可能性があります。ソースファイルの削除、オブジェクト・ファイルを、ファイルデータは、情報パッケージが機能を与えられるように、同様にせずに読み取ることができます。

 36 void opps(char *s1,char *s2)
 37 {
 38         fprintf(stderr,"Error:%s",s1);
 39         perror(s2);
 40         exit(1);
 41 }

その他のファイル操作がより精通しているが、確認され、その定義の使用fprintfのは、まだあまりにもこのことを理解することができないとき、自分の小さな実験後には、第2項の第3の出力フォーマット出力としてそれを理解することができますそれは標準エラーに流れる場所に、ファイル内の最初の項目。より身近perrorは、標準エラーストリームへの出力機能上のエラーの原因。

次に、主な機能を見てみましょう。

 10 int main(int ac,char *av[])
 11 {
 12         int in_fd,out_fd,n_chars;
 13         char buf[BUFFERSIZE];
 14 
 15         if(ac!=3)
 16         {
 17                 fprintf(stderr,"usage:%s source destination\n",*av);
 18                 exit(1);
 19         }
 20 
 21         if((in_fd=open(av[1],O_RDONLY)) ==-1)
 22                 opps("Cannot open",av[1]);
 23 
 24         if((out_fd=creat(av[2],COPYMODE)) ==-1)
 25                 opps("Cannot creat",av[2]);
 26         while((n_chars=read(in_fd,buf,BUFFERSIZE))>0)
 27                 if(write(out_fd,buf,n_chars) != n_chars)
 28                         opps("Write error to",av[2]);
 29         if(n_chars == -1)
 30                 opps("Read error from",av[1]);
 31         if(close(in_fd) == -1||close(out_fd) ==-1)
 32                 opps("Error closing files","");
 33 
 34 }

前に自分の言葉を書くために、より良い理解が、非常に巧妙なmain関数のパラメータを使用することであるされてプログラム自体を決定する機能は、問題の他の変数フラグ判定パラメータを紹介します主な機能に関連する問題は、この原理を探求し、もはや詳細ではないと言います、あなたはその使用を見ることができます。

AC 1は、cpコマンドを使用している間は、ソースファイルとターゲットファイルを必要とするとき、あなたがないのであれば、交流コースの値は、3の場合であれば(AC!= 3)を決定するために、正しいコマンド形式かどうかを決定する際に、自身がすでに実行されています3どのようにしますか?出力使用:CPソース宛先、バックポインタ常に点最初のコマンドには、他の変数を導入する必要性を判断するために、それは判断の関数としての主なパラメータの巧妙な使用であるパラメータCPアレイに格納されます。

後者は言うまでもなく、二番目の配列が、ソースファイルに保存され、後者の決意を採用AV [i]の代わりに、ソースファイル、オブジェクトファイルであってもよいでは、第三のストレージファイルを標的とします。これは、一度、すべての達成のメイン関数のパラメータを言うことができます。

コンパイルした後、あなたは少しのファイルをコピーするために、独自のcpコマンドを記述するために使用することができ、コードを実行します。

もちろん、このプログラムはまた、学ぶことは非常に価値のある場所が、一時的に広く通常のプログラミングではないだけに使用されるバッファーゾーンの規定は、カーネルも非常に重要なメカニズムであること、データを格納するためBUFFERSIZEを定義します。詳細については、システムが少額いくつかの昇給をプログラミング

公開された15元の記事 ウォン称賛13 ビュー9058

おすすめ

転載: blog.csdn.net/weixin_43122409/article/details/84535139