Я пытаюсь использовать команду md5sum
в программе C, прямо сейчас я использую dirent.h
, чтобы получить все файлы в папке, теперь я хочу получить все md5 из все эти файлы, я делаю это:
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>
#include <dirent.h>
int main(void){
char *word = ".gz";
int i=0;
char *word2 = ".";
char *word3 = "..";
unsigned int md5;
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d) {
while ((dir = readdir(d)) != NULL)
{
if((strstr(dir->d_name, word) == NULL) && (strcmp(dir->d_name, word2) != 0) && (strcmp(dir->d_name, word3)!= 0)) {
md5 = system("md5sum dir->d_name");
printf("The md5 of %s is %d\n", dir->d_name, md5);
}
}
}
return(0);
}
но когда я запускаю его, он говорит, например:
md5sum: dir-: No such file or directory
The md5 of ej1_signal.c is 256
md5sum: dir-: No such file or directory
The md5 of pipeL.c is 256
Не могли бы вы объяснить мне, почему это происходит? Спасибо !
system
. - person Cristian Ciupitu   schedule 27.12.2014md5
, а код выхода команды? - person Iharob Al Asimi   schedule 27.12.2014"md5sum dir->d_name"
? - person E_net4 the curator   schedule 27.12.2014shell script
для этих целей, анализ/выполнение команд оболочки через стандартный C .... в лучшем случае подвержен ошибкам, вам в значительной степени нужно быть экспертом в обоих языках. Всегда используйте тот инструмент, который подходит лучше всего, все остальное создаст головную боль, даже если вам кто-то поможет. - person specializt   schedule 27.12.2014snprintf
для объединения md5sum %s с фактическим именем файла... и вам может понадобитьсяpopen()
вместоsystem()
, если вы работаете в системе Posix... не уверен, что альтернатива win32 - person technosaurus   schedule 27.12.2014