我正在研究一个程序,该程序将读取文件中的不同行并为每个程序启动一个程序,根据行上的写入程序,它将执行各种操作,但是我保留得到分段错误错误,我不知所措,试图解决它。
我试图关注此问题主题中的所有内容:passing pointer char argument to function in thread
但它仍无法正常工作。线程函数将是:
void *thread(void *arg)
{
char *buf = arg;
char *tok, *sp;
//extracting transaction type
tok = strtok_r(buf, " ", &sp);
//Branchement selon le type de transaction
switch(tok[0]){
...
}
并将由此部分调用:
void* readTranslinkedINFO(char* nomFichier){
FILE *f;
char buffer[100];
pthread_t tid;
//Opening file
f = fopen(nomFichier, "rt");
if (f==NULL)
error(2, "readTrans: Erreur lors de l'ouverture du fichier.");
//read first line
fgets(buffer, 100, f);
//start a thread for each line
while(!feof(f)){
pthread_create(&tid, NULL, thread, buffer);
//reading next line
fgets(buffer, 100, f);
}
pthread_join(tid, NULL);
//closing file
fclose(f);
//Return
return NULL;
非常感谢任何帮助 对不起,如果还有一些法语单词 感谢
答案 0 :(得分:1)
buffer
会传递给所有线程。您可以使用strdup()
将每行的副本传递给每个线程,并且线程函数可以自由处理它。