- 论坛徽章:
- 36
|
本帖最后由 cokeboL 于 2011-06-24 16:57 编辑
回复 10# sumland - while(1)
- {
- ...//略去
- pid_t pid;
- pid=fork();
- if(pid<0)
- {
- close(nConnectSocket);
- continue;
- }
- else if(pid>0)
- {
- close(nConnectSocket);
- continue;
- while(i<120)
- {
- i++;
- sleep(1);
- get_fp(&NowFp,str);
- }
- }
- }
复制代码 pid判断那块是不是少了else(pid == 0 )的情况?否则这逻辑不对啊,while里的那个while能执行到吗?不是continue了吗?
如果是少了的话,看这段代码,楼主fork()的子进程做的事情应该是继承了第一次循环之后的代码,然后子进程fork()的子进程也是,如此循环,会又子子孙孙循环fork()和get_fp的情况吧?那自然就有很多个进程在比较自己的nowtime和creattime满足>=10的时候创建文件了。也就是说这个fork()创建的子进程除了对程序破坏并没有进行有意义的活动。干脆把fork()去掉算了,就要达到的目的来说,没必要用多进程的感觉,楼主试试。如果非要多进程,那试试- while(1)
- {
- ...//略去
- pid_t pid;
- pid=fork();
- if(pid<0)
- {
- close(nConnectSocket);
- continue;
- }
- else if(pid>0)
- {
- close(nConnectSocket);
- continue;
- }
- else{
- while(i<120)
- {
- i++;
- sleep(1);
- get_fp(&NowFp,str);
- }
- }
- }
复制代码 |
|