Ich bekam "Segmentierungsfehler (Core Dumped)"Segmentierungsfehler (Core Dumped) mit "FILE * pFile;"?
und Prozess wurde unterbrochen.
Hilfe, um es bitte zu beheben!
verdächtige Teil Code hier
...
FILE *pFile;
char buffer[100];
sprintf(buffer,"/var/www/html/%s.txt",topic);
pFile = fopen(buffer,"w");
Dieses Problem wurde in der oben kommen kann (Haben Sie nicht eingeben if-else)
if(NULL == pFile){
_mosquitto_log_printf(NULL, MOSQ_LOG_DEBUG,"open failure");
}else{
fwrite(payload,1,sizeof(payload)-1,pFile);
_mosquitto_log_printf(NULL, MOSQ_LOG_INFO, "File context : %s", payload);
}
fclose(pFile);
...
OS Ubuntu 14
Was ist 'Nutzlast'? –
Haben Sie versucht, einen Debugger zu verwenden, um zu sehen, welcher Befehl den Segfault verursacht hat? – blatinox
Wenn "topic" lang genug ist, passt der von Ihnen erstellte Text möglicherweise nicht in den Puffer. Da dies aussieht, als wäre es auf dem Stack, würde ein Pufferüberlauf wahrscheinlich 'pFile', einige andere Variablen und vielleicht sogar die Rücksprungadresse verfälschen. IOW: Es könnte ein klassischer Pufferüberlauf sein (aber ohne böswillige Absicht). Wie Sie bereits sagten, könnte das Problem auftreten, bevor Sie die if-else-Klausel eingeben. –