与stderr的Segfault

时间:2010-11-13 19:19:51

标签: c pipe stderr printf

我的代码中有一个奇怪的段错误。它在最后的if语句中。任何人都知道为什么我会遇到段错误?

void processArgument(char argument[]){
    FILE *sketcher;
    FILE *fp;
    fp = fopen (argument, "r");
    sketcher = popen(Exec_c, "w");
 if (fp == NULL){
        printf ("Could not open pipe to %s\n", argument);
  exit (EXIT_FAILURE);
 }
    if (sketcher == NULL){
        printf ("Could not open pipe to %s\n", argument);
  exit (EXIT_FAILURE);
    }else{
        parseFile(fp, sketcher);
        if(fclose(fp)==EOF){
   printf("couldn't close pipe to %s.\n", argument);
   exit(EXIT_FAILURE);
  }
        if (pclose(sketcher) == -1){                                                 //if (pclose(sketcher) == -1){
            fprintf(stderr, "draw_line error: couldn't close pipe to %s.\n", Exec_c);//fprintf(stderr,"",E);
            exit(EXIT_FAILURE);    
        }
    }
} 

1 个答案:

答案 0 :(得分:3)

最简单的可能性是Exec_c不是有效的字符串。