Я пытаюсь прочитать путь из строки cmd, а затем запустить cmd ls для печати только скрытых файлов и их длинной информации в указанном пути, а затем в текстовый файл. Моя проблема заключается в том, что возвращает 'LS':Как печатать только скрытые файлы в каталоге, используя 'ls' cmd?
LS: нелегальный вариант -
LS: нелегальный вариант -.
ls: незаконный вариант -?
лс нелегальный вариант - *
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define NUMARG 2
/* start main */
int main(int argc, char *argv[]){
/* define data */
DIR *dirptr;
struct dirent *dp;
int pid;
int fd = open("output_file", O_WRONLY|O_CREAT, 0666);
/* Command Line Check */
if(argc != NUMARG){
fprintf(stderr, "usage: %s dirname\n", argv[0]);
exit(1);
}
/* Open the specified directory */
if((dirptr = opendir(argv[1])) == NULL){
fprintf(stderr, "Could not open directory %s\n", argv[1]);
exit(1);
}
/* fork another process */
switch(pid = fork()){
/* succesfull child process */
case 0:
dup2(fd, 1);
close(fd);
printf("Running ls\n");
execlp("ls", "ls" , "-ld .?*", argv[1], (char*)NULL);
perror("execlp");
exit(1);
default:
sleep(5);
printf("Hitting default...\n");
break;
case -1:
perror("err");
exit(1);
}
}
Привет, Могу ли я спросить, почему вы используете forking? –
Хорошо, я получил его после чтения документа из execlp ^^ –
Пытается распечатать вывод ls -ld.? * В текстовый файл. –