我正在开发一个涉及多个进程(子进程和父进程)的C应用程序,我正在try 使用共享内存和信号量在它们之间共享统计数据.然而,我的代码遇到了一个问题,子进程似乎没有正确地修改父进程中的共享统计信息,这阻碍了我准确地打印它们.
在Main中,我创建并附加了共享内存:
stats_shm_id = create_shared_memory(SHM_STATS_KEY, sizeof(Statistics));
stats = (Statistics *)attach_shared_memory(stats_shm_id);
Init函数执行以下操作:
stats = (Statistics *)malloc(sizeof(Statistics));
stats->shared_data_1 = 0;
stats->shared_data_2 = 0;
打印功能执行以下操作:
printf("%d",stats->shared_data1);
printf("%d",stats->shared_data2);
我的目标是让子进程修改父进程中的共享统计信息,以便能够准确地打印它们.然而,当我调用print_Statistics()函数时,子进程所做的更改似乎没有反映在父进程中.我已经验证了信号量是否被正确使用来同步对统计数据的访问.
有没有人能帮我弄清楚可能出了什么问题?这会不会是同步问题?我应该考虑采取哪些步骤来排除和解决此问题?
提前感谢您的任何帮助和建议!