[英]creating ls command in c
我正在嘗試創建ls命令。 首先,如果我輸入“ ls”,則代碼不起作用,僅當我輸入完整路徑時,它才起作用。 其次,它不在exevcp()之后循環。 為什么? 謝謝。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int main(void){
char *line;
char *args[32];
memset(args, 0, sizeof(args));
while (1){
line = (char*)malloc(1024);
printf("$ ");
fgets(line,1024,stdin);
args[0] = strtok(line, " ");
args[1] = strtok(NULL, " ");
execvp(args[0], args);
perror("execvp");
}
}
由於execve()
從不返回,因此不會循環。 而且,這似乎是實現ls
一種非常奇怪的方式:您應該嘗試打開目錄並讀取其內容(文件列表),而不希望運行其他命令。
查看opendir()
和readdir()
函數,這是實際實現ls
的一種方法。
而且, 請不要在C中malloc()
的返回值 。
這是使用c
實現ls
命令的簡單方法。 要運行,請使用例如./xls /tmp
#include<stdio.h>
#include <dirent.h>
void main(int argc,char *argv[])
{
DIR *dir;
struct dirent *dent;
dir = opendir(argv[1]);
if(dir!=NULL)
{
while((dent=readdir(dir))!=NULL)
{
if((strcmp(dent->d_name,".")==0 || strcmp(dent->d_name,"..")==0 || (*dent->d_name) == '.' ))
{
}
else
{
printf(dent->d_name);
printf("\n");
}
}
}
close(dir);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.