我想创建一个程序,用不同的线程写一个文件。我写了下面的代码。C程序只写一行fprintf
#include <time.h>
#include <stdlib.h>
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
pthread_t thread_id;
void *write_file(void *arg) {
int number = (int) arg;
FILE *file_write = fopen("file.txt", "w");
fprintf(file_write, "Number: %d\n", number);
fclose(file_write);
printf("Thread Finalized\n");
return NULL;
}
int main() {
chdir("/");
srand(time(NULL));
int cont = 0;
while(1) {
int random_number = rand();
if(random_number % 5 == 0) {
cont++;
int response = pthread_create(&thread_id, NULL, write_file, (void *) random_number);
if(response != 0) {
printf("Can't create process\n");
} else {
printf("Thread created successfully\n");
}
}
sleep(1);
if(cont == 8) {
break;
}
}
return 0;
}
但是当我打开该文件,我发现只有一个行,如下所示:
Number: 1069822935
我想到的是,该文件应包含8条线与整除的随机数由5
谢谢。
当你'w'模式下打开它清空文件。如果你想添加到文件,使用'a'模式。 – Barmar
重要的是要注意,如果你想执行文件,你必须在根('/')目录下有一个'file.txt'。 – Lemark
解决了你的'fopen'问题后,你的下一个任务就更加先进了。你将需要防止这些线程彼此跨越。如果你没有,你的文件最终会随机乱码。 –