当前位置: 技术问答>linux和unix
有一个关于fork()和程序设计的问题请高手指点
来源: 互联网 发布时间:2015-12-18
本文导语: 我写了一个程序是处理网络数据包的,由于代宽比较大,所以我FORK()10个进程去处理数据包(均载平衡防止丢包),这10个进程都是调用同一段代码去处理数据包,我有几个问题,这10个进程会不会同时对同一数据包都进行处理(...
我写了一个程序是处理网络数据包的,由于代宽比较大,所以我FORK()10个进程去处理数据包(均载平衡防止丢包),这10个进程都是调用同一段代码去处理数据包,我有几个问题,这10个进程会不会同时对同一数据包都进行处理(我测试一下好象不是).还有我要把处理的结果写到一个文件里面,这样在FORK()的代码中我用到了FILE*,我想10个进程往同一文件里面写会不会有问题,应该是没问题(我认为LINUX会做这件事情,他会开辟10个内存空间).我现在就怕这10个进程对同一个包处理都处理,然后把处理结果重复的写到同一个文件里面.请高手指点,我也是刚入门.尤其在写代码的时候,就会用VI,就象在记事本写一样,我还的努力学.项目比较紧没时间学习.
|
第一种情况是有可能产生多个进程同时处理同一个数据包的,特别是在多cpu的机器上会更容易发生,因此你需要一种锁机制来避免这种情况的发生。关于同时写文件的问题,如果你在打开文件的时候用了a(append)选项,那么就不会有问题,因为系统相关的函数已经处理了并发了。