我嘗試使用execvp創建一個作爲參數給出的存儲庫。但我得到了一些段錯誤(核心轉儲),我不能在下面的代碼解決:execvp段錯誤
#include <sys/stat.h> //mkdir
#include <sys/types.h>
#include <stdio.h> //perror
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define MAX 10
int main(int argc, char *argv[]) {
int i;
char *args[6] = {"tar","-xzvf", strcpy(args[2],argv[0]), "-C", "/home/bg/Desktop /Project/", NULL};
FILE *fp;
char *line = (char *)malloc(sizeof(char));
char *result = (char *)malloc(sizeof(char));
size_t len = 0;
ssize_t read;
char* strings[MAX];
int result_code = mkdir("/home/bg/Desktop/Project/", 0777);
umask(mask);
if(result_code ==-1) {
perror(argv[0]);
printf("Erreur dans la création du répertoire/n");
exit(EXIT_FAILURE);
}
if(result_code==0){
printf("Le répertoire a bien été crée \n");
execvp(*args,args);
fp = fopen("/home/bg/Desktop/Project/meta", "r");
if (!fp) {perror("problème avec le fichier");
fprintf(stderr, "Erreur dans l'ouverture du fichier\n");
exit(EXIT_FAILURE);
}
while ((read = getline(&line, &len, fp)) != -1) {
printf("On récupère une ligne de taille %zu :\n", read);
printf("%s", line);
if(strchr (line,'#') != NULL) {
}
else if (strchr (line,'$') != NULL) {
strings[i] = strdup(line);
i++;
}
else if (strchr (line,'>') != NULL) {
result = strdup(line);
}
}
unlink("meta");
free(line);
free(result);
exit(EXIT_SUCCESS);
}
}
我試圖用字符**但execvp不適合它。 感謝您的幫助。
這是否編譯? – OldProgrammer 2014-11-23 22:21:33
@OldProgrammar否 – 2014-11-23 22:28:07