小弟最近在写AIX环境下的c程序,用到子进程,代码如下:
……
for(;;){
if ((childpid = fork())<0) {
printf("不能进行fork\n");
tInt_RetCode = -1;
goto ExitHere;
} else if (childpid==0) {
tInt_RetCode = srvM( i, ptsDate );
exit(0);
}
sleep(6);
}
……
现在的问题是:程序运行后,查看系统进程,出现了很多
by lxorb - AIX - 2006-08-09 17:59:27 阅读(1162) 回复(1)
#include
平台:linux7.2 我用fork()创建了一个子进程,子进程处理完后我用exit(0)退出,却发现子进程用ps -ef|grep 进程名,还是能看到?怎么回事?如何做到子进程退出后用ps -ef|grep 进程名,子进程名不在上面?
大概流程是这样的,我在main函数调用某个函数(do_pipe), 在do_pipe函数里面,我fork了一个子进程, 然后子进程里面执行execvp,并且把结果利用dup2重定向到管道的一端,然后从父进程从管道另一端接收数据作为输入。大致如下: int do_pipe() { pid_t pid; if(pid==0) { dup2(); execvp(); } else { wait(); dup2(); execvp; } return 0; } 此...
#include
如果我单独运行一个child程序的话,大概只要花1秒中就可以跑起来,如果我从另外一个程序用fork一个子进程然后用execl调用child程序的话,就要花3秒左右才可以跑起来。 我想问一下,为什么要多这两秒钟,主要的时间花在什么地方,怎样才可以提高速度? 谢谢
使用的是标准的tcp server模型,fork一个子进程来提供服务。
发现每个子进程结束后,在ps中还是可以看见,使用kill -9 xxx还是不能杀掉
该如何解决?
环境是redhat 8,g++编译。
另外问一句,ps查看,子进程提供服务的时候,名称显示是正常的,但结束后,
子进程不死,看到的是用中括号括起,还添加了[code]
平台:redhat7.2 我用fork创建出一个子进程,子进程处理完事务后要退出,我用exit(0)来退出子进程,但发现ps -ef|grep 进程名时,子进程仍然看到, 请问要怎样才能子进程退出后,ps -ef|grep 进程名看不能子进程 对了,我父进程不能退出。
我用init进程fork了一个子进程后,但是我fork的子进程却不能输出信息到终端,见到init源码中讲标准输入输出都已经关闭: close(1); close(2); close(0); 请问如何才能讲我子进程中的输出信息打印到终端?
main () { int pid; pid=fork(); if (pid < 0) printf("error in fork!"); else if (pid == 0) printf("i am the child process, my process id is %d\n",getpid()); else printf("i am the parent process, my process id is %d\n",getpid()); } 反复运行 ,发现有时候是先子进程,后父进程,有时候是先父进程后子进程,是为什么呢?...