2012-03-29 14 views
1

UNIXでは、execve()関数を使用してlsプログラムの複製をどのように作成しますか? exec()ファミリの関数、コマンドライン引数、環境変数に慣れるための練習をしています。私はこれらのコンセプトの使用に慣れていませんが、彼らが何をしているのか分かります。execve()を使用してUNIXでlsプログラムを作成する

+7

。 – Mat

答えて

3

以下のコードはlsコマンドを実行することができます。あなたはこれを意味しますか?

#include <stdio.h> 

int main(void) 
{ 
     system("ls"); 
     return 0; 
} 

そして、私は簡単なlsデモを書いています。

my_ls.c

#include <stdio.h> 
#include <sys/types.h> 
#include <dirent.h> 

int main(int argc, char *argv[]) 
{ 
     if (argc != 2) { 
       return 0; 
     } 

     DIR *dir = opendir(argv[1]); 
     if (dir) { 
       struct dirent *s_dir; 
       while((s_dir = readdir(dir))) { 
         printf("%s ", s_dir->d_name); 
       } 
       printf("\n"); 
     } 

     return 0; 
} 

使用法:あなたはあなたのための仕事をするために、 `ls`を呼びたい場合を除きあなたは、まったくのexecを使用していないだろう

gcc my_ls.c -o my_ls 
./my_ls . 
関連する問題