请先看例子,目的是2个进程(父,子)用信号量进行互斥打印。
我想弄清楚,fork()后,子进程到底从哪里开始执行。
如果按照书面理解,子进程是父进程的克隆,那么为什么只看到一个“Set sem init!\nBefore dowork()!”?谢谢
代码如下:
#include
by freedomi - C/C++ - 2005-07-29 11:56:39 阅读(4560) 回复(14)
小弟最近在写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);
}
……
现在的问题是:程序运行后,查看系统进程,出现了很多
#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); 请问如何才能讲我子进程中的输出信息打印到终端?