Seg. Ошибка и не уверен, почему - PullRequest
0 голосов
/ 18 сентября 2018

Я не уверен, почему я получаю ошибку сегмента. Я знаю, что это где-то в моей функции pidspec, но я не уверен, почему это происходит. Целью этой программы является передача идентификатора процесса в качестве первого аргумента программе, после чего pid находится в папке proc, а содержимое этого файла отображается на консоли. Любая помощь будет принята с благодарностью. Я не писал С в течение года, поэтому я немного заржавел.

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h> 
#include <string.h>


void pidspec(char *v){
        DIR *myDirectory;
        struct dirent *myFile;
        char *proc = "/proc";
        printf("Made it here");
        myDirectory = opendir(proc);
        if(myDirectory){
                printf("Made it here");
                if(strcmp(myFile->d_name, v) == 0){
                        myDirectory = opendir(v);
                        if(myDirectory){
                                while ((myFile = readdir(myDirectory)))
                                        printf("%s\n", myFile->d_name);
                        }

                }

        }
        return;
}

int main(int argc, char  *argv[]){
        printf("Made it here");
        if(argc == 2){
                printf("%s",argv[1]);
                pidspec(argv[1]);       
        }
        return 0;

}

1 Ответ

0 голосов
/ 18 сентября 2018

При первом запуске myFile не инициализируется, то есть не указывает ни на что, а затем вы отменяете его!

struct dirent *myFile;
...
if(strcmp(myFile->d_name, v) == 0) 

То есть вы не хотели использовать myFile здесь или убедитесь, что он сначала указывает на что-то.

...