У меня проблема с созданием текстового чата.и я буду запускать эту же программу в двух разных терминалах одновременно.Я использую файл в моей программе, который находится на одном терминале. Я запишу данные, которые будут сохранены в файле, а следующий терминал прочитает и отобразит аналогично.
У меня есть две функции отправки и получения.теперь я хочу, чтобы и мой отправитель и получатель работали одновременно, то есть когда я отправляю сообщение одновременно, я могу получать сообщение.что я должен делать, я пытался разветвиться, но я думаю, что я не знаю, как его использовать. и как мне управлять этим, так как к одному и тому же файлу обращаются два процесса, каждый обращается к нему два раза, любое предложение или помощь, спасибо, это мой коддо сих пор
#include<stdio.h>
#include <sys/stat.h>
#include<unistd.h>
void send()
{
char message[256];
fgets(message , 256 , stdin);
//printf("Message is : %s" , message);
FILE * f1;
f1= fopen("chatfile.txt", "w");
if(f1== NULL)
{
printf("not open ");
}
fprintf(f1 , "%s" , message);
fclose(f1);
}
//-------------------------------------------------------
void recieve()
{
char message[256];
FILE * f1;
f1= fopen("chatfile.txt", "r");
fgets(message , 256 , f1);
printf("Message is : %s" , message);
fclose(f1);
}
//-------------------------------------------------------
int file_size()
{
struct stat st;
stat("chatfile.txt" , &st);
int size = st.st_size;
return size;
}
//------------------------------------------------------
int main()
{
int size =0;
//printf("%d" , getpid());
pid_t pid;
pid = fork();
while(1)
{
if( pid == 0)
{
printf("parent");
send();
}
else
{
printf("child");
recieve();
}
}
}