当前位置: 技术问答>linux和unix
关于进程的问题!!!!!!!!?
来源: 互联网 发布时间:2014-12-01
本文导语: int main(...) { if(fork()==0) {//进程A int a=0; if(fork()==0) {//进程B while(1) printf("%dn",a++); } a=-200; } } 我...
int main(...)
{
if(fork()==0)
{//进程A
int a=0;
if(fork()==0)
{//进程B
while(1)
printf("%dn",a++);
}
a=-200;
}
}
我对Linux下的进程还不是很了解,请高手指点
1.进程A是不是等进程B结束了再结束?
2.问题1如果不是,a=-200对B进程有影响吗?
3.B进程对a的变化,对进程A中的a有影响吗?
4.A、B进程中的a是不是同一变量?
{
if(fork()==0)
{//进程A
int a=0;
if(fork()==0)
{//进程B
while(1)
printf("%dn",a++);
}
a=-200;
}
}
我对Linux下的进程还不是很了解,请高手指点
1.进程A是不是等进程B结束了再结束?
2.问题1如果不是,a=-200对B进程有影响吗?
3.B进程对a的变化,对进程A中的a有影响吗?
4.A、B进程中的a是不是同一变量?
|
fork()一个子进程后,这个子进程是从这句fork()后面开始执行的。
fork()执行后如果成功将返回子进程的PID给父进程,返回0给子进程。失败则返回-1给父进程。
子进程把你进程的环境变量拷贝后独立执行,而不是对父进程的变量进行直接操作
fork()执行后如果成功将返回子进程的PID给父进程,返回0给子进程。失败则返回-1给父进程。
子进程把你进程的环境变量拷贝后独立执行,而不是对父进程的变量进行直接操作
|
fork()创建一个与当前进程完全相同的拷贝
通常是在fork()后面写一条if语句,通过他来让父进程和子进程执行不同的功能.
if return value equal to zero ,then excute child_pid
if return value great than zero,then excute father pid;
通常是在fork()后面写一条if语句,通过他来让父进程和子进程执行不同的功能.
if return value equal to zero ,then excute child_pid
if return value great than zero,then excute father pid;
|
1 不是,除非你调用函数wait
2 没有影响
3 没有
4 不是,子进程在开始复制了父进程的变量值之后,两个变量就没有别的关系了
2 没有影响
3 没有
4 不是,子进程在开始复制了父进程的变量值之后,两个变量就没有别的关系了