返回信息流int main()
{
int I = 20;
pid_t pid = 5;
if((pid = fork()) > 0)
{
I = 50;
printf("%d\n",I); (1)
}
else if(pid == 0)
{
printf("%d\n",I); (2)
}
}
请问该程序用的是进程方式还是线程方式
谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #26297同步于 2009/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
怎么看一段代码是线程还是进程方式?
InterMilan
2009/7/15镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
这种理解方法好,简单易懂~f**k出来就是父子关系
【 在 lanphon (从此低调) 的大作中提到: 】
: f**k不是出来的是进程么?线程好像是pthread还是什么的
【 在 InterMilan (请叫我洞洞) 的大作中提到: 】
: 标 题: 怎么看一段代码是线程还是进程方式?
: 发信站: 北邮人论坛 (Wed Jul 15 11:22:43 2009), 站内
:
: int main()
:
: {
:
: int I = 20;
:
: pid_t pid = 5;
:
: if((pid = fork()) > 0)
:
: {
:
: I = 50;
:
: printf("%d\n",I); (1)
:
: }
:
: else if(pid == 0)
:
: {
:
: printf("%d\n",I); (2)
:
: }
:
: }
:
: 请问该程序用的是进程方式还是线程方式
: 谢谢
找本APUE好好看看吧..
: --
: 和尚摸得 我摸不得
:
: ※ 来源:·北邮人论坛 http://forum.byr.edu.cn·[FROM: 59.64.138.*]
【 在 InterMilan 的大作中提到: 】
: int main()
: {
: int I = 20;
: ...................
唉,什么呀,这个代码很容易理解,
fork这个函数,会产生一个子进程,程序的内存变量会复制一个副本。
不同的是,fork返回为0时,说明此进程是子进程(或父,忘了...),反之。
所以,执行fork后,你就有两进程了,并且两进程都执行到了fork这里。
你通过判断返回值,就知道是父是子了,当然,如果你的父子进程没区别的话,
就没必要判断,然后该干啥干啥去,记得此时程序是从fork之后开始运行的。
不要判断其它变量,我说过,子进程变量是父进程变量的副本,(唯独fork返回值不同)。
执行一些其它操作后,两者的变量才可能区别开来。
【 在 white127 的大作中提到: 】
: 这种理解方法好,简单易懂~f**k出来就是父子关系
每次看到进程,我就在想,为什么不换一个更加容易理解的单词呢?