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