Chinaunix
标题:
父子进程之间怎么同时使用一人变量
[打印本页]
作者:
c513636054
时间:
2010-10-25 14:27
标题:
父子进程之间怎么同时使用一人变量
小弟在最近编写C程序时遇到一个问题,我编写了一个程序它是一个TCP/IP通讯的SERVER端,它的基本功能是当CLIENT端CONNECT上来之后我会fork一个子进程去处理它。我想做一个同时处理CLIENT端交易的最大数限制。我想知道除了使用popen之外还有没有其它的方法实现。linux C 中有没有父子进程可以共同访问的一种变量?
请大家指点一下谢谢!
作者:
duanjigang
时间:
2010-10-25 14:57
父进程创建子进程时会把变量复制一份给子进程,如果是只读的话,父进程初始化,创建子进程后直接就能用了。
如果要修改的话,就用进程间通讯实现吧(比如socket)。父子空间已经是不同的内存空间了。更线程不一样,不能使用同一个变量了。
作者:
zzzzzhou
时间:
2010-10-27 20:36
你也可以用多线程来实现。线程间是共享全局变量等资源的。你可以定义一个结构体,里面包含了跟CLIENT相关的变量,如CLIENT的socket、IP地址/端口等,然后定义一个类型为这个结构的全局数组,每次有CLIENT连接进来,就产生一个子线程,并用一个新的数组元素来保存跟这个CLIENT相关的信息。
多线程编程要小心,要注意控制对共享资源的访问,不当心的话很容易留下BUG,很难查。我一般尽量用不同的变量空间(像上面我说的那样)对应不同的线程,对那些必定会有多个线程同时访问的变量,要用读写锁之类的手段进行控制。
作者:
c513636054
时间:
2010-10-27 20:58
谢谢……我们公司开发的应用软件一般都在金融行业用所以安全是第一位。 现在为了解决控制最大进程数问题,我使用了popen函数来统计。使用ppopen函数的缺点是它降低了系统的效率。谢谢大家!
作者:
seaquester
时间:
2010-10-28 09:01
Share Memory (共享内存) 也许是你需要的
作者:
action08
时间:
2010-11-06 17:07
你告诉你们老大,popen只是一个系统函数,跟安全一毛钱关系
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2