メソッド「pthread_create」を呼び出すたびに、コードをコンパイルした後に実行すると、常に「セグメンテーション違反」というエラーが発生します。以下にリストされているコードは、誰でも助けてくれます。どうもありがとう!
int iLogThreadID;
pthread_t dwLogThread;
iLogThreadID = pthread_create(&dwLogThread, NULL, &logInformation, NULL);
メソッド「logInformation」は以下のようにリストされています
void* logInformation(void * info)
{
char logInfoString[SINGLE_LOG_SIZE];
memset(logInfoString,0,SINGLE_LOG_SIZE);
if(gLogFile == NULL)
{
return EXEC_ERROR;
}
while(g_logThreadStatus == LOG_THREAD_RUNNING)
{
if(g_logBufferStartIndex == g_logBufferEndIndex)
{
sleep(10 );
continue;
}
if(popLogBuffer(logInfoString) == EXEC_ERROR)
continue;
fputs(logInfoString, gLogFile);
memset(logInfoString,0,SINGLE_LOG_SIZE);
}
g_logThreadStatus = LOG_THREAD_TERMINATED;
return EXEC_OK;
}
メイクファイル
CXX= /usr/bin/gcc
LIBDIR=../coapLib
CFLAGS= -I${LIBDIR}
CXXFLAGS= ${CFLAGS} -g
LIBS= -lm -pthread -nostartfiles
OBJ = coapClient.o Block.o CoapMsg.o CoapObserve.o CoapOpt.o Common.o Config.o IfMatch.o IO.o link.o md5.o cHashtable.o cJSON.o Log.o MsgHandle.o Network.o URIdatabase.o messagePrint.o ConMsgBase.o ClientMsgHandle.o ClientInterpreter.o
coapClient: ${OBJ}
${CXX} $(CXXFLAGS) -o coapClient ${OBJ} ${LIBS}
coapClient.o: coapClient.c
${CXX} ${CXXFLAGS} -c coapClient.c
...
clean:
rm -f *.o coapClient