社区
Linux/Unix社区
帖子详情
还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
wayne92
2005-05-12 05:57:06
#include<stdio.h>
void createprocess(){
int t;
printf("123");
t=fork();
if(t!=-1){
if(t==0) printf("b");
if(t>0) printf("a");
}
}
int main(){
createprocess();
}
结果是123a123b
为什么123会打印两次呢?
fork在打印123的语句下面啊,问了老师,他也讲不清楚.
...全文
153
7
打赏
收藏
还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
#include void createprocess(){ int t; printf("123"); t=fork(); if(t!=-1){ if(t==0) printf("b"); if(t>0) printf("a"); } } int main(){ createprocess(); } 结果是123a123b 为什么123会打印两次呢? fork在打印123的语句下面啊,问了老师,他也讲不清楚.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
colorwu
2005-05-13
打赏
举报
回复
if(t!=-1)这句改成if(t = 0)或if(t > 0)
qfxx
2005-05-13
打赏
举报
回复
同意 nichotilikai(lk)的话
fork共享内存,包括缓冲区
而缓冲区没有清空啊
在第一个printf后加'\n'或用fflush
就不会出现这个现象了
mprogrammer
2005-05-13
打赏
举报
回复
向nichotilikai(lk) 学习!
sumless
2005-05-12
打赏
举报
回复
我们的那本书上真的有写吗?
我怎么找不到?
我刚又看了一便第四章,没有啊
wayne92
2005-05-12
打赏
举报
回复
谢谢nichotilikai(lk)
我明白了。确实是我看书不仔细。
我正在看《UNIX系统编程》。
我们正在上操作系统,老师给了一些试验,要在LINUX环境下完成。所以刚开始学。
可以给些学习方面的建议吗?谢谢!
nichotilikai
2005-05-12
打赏
举报
回复
楼主读书似乎不仔细。这样的问题,基本上在书上讲fork的地方,都会说明。
printf出现在fork前,似乎应该出现一次,但由于没有换行符,或者用fflush将缓冲区内容输出,所以在fork时,“123”没有输出,还在缓冲区内,它的内容也被子进程所复制。父进程和子进程的缓冲区内,都有“123”。
mprogrammer
2005-05-12
打赏
举报
回复
用fork产生出一个子进程嘛!和父进程享有公用的资源!就好比一个进程的COPY,然后同时执行,如果按照你函数的例子讲就是 t = 0 代表是子进程在执行,t = -1 就是父进程在执行!明白了没?
进程的创建编写一段程序,使用系统
调用
fork
()创建两个子进程。当此程序运行时,
进程的创建 编写一段程序,使用系统
调用
fork
()创建两个子进程。当此程序运行时, 在系统
中
有
一个
父进程和两个子进程活动。 让每
一个
进程在屏幕上显示
一个
字符:父进程显示“A”; 子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果
fork
()
函数
详解
目录 1.基本了解: 2.
fork
函数
的了解: 3.僵死进程: 1.基本了解:
一个
进程,包括代码、数据和分配给进程的资源。
fork
函数
会新生成
一个
进程,
调用
fork
函数
的进程为父进程,新生成的进程为子进程。在父进程
中
返回子进程的 pid,在子进程
中
返回 0,失败返回-1。 为什么两个进程的fpid不同呢,这与
fork
函数
的特性有关。
fork
调用
的
一个
奇妙之处就是它仅仅被
调用
一次,却能够返回两次,它可能有三种不同的返回值: 1)在父进程
中
,
fork
返回新创建子进程的进程...
Linux
中
fork
()
函数
详解
linux
中
fork
()
函数
详解 一、
fork
入门知识
一个
进程,包括代码、数据和分配给进程的资源。
fork
()
函数
通过系统
调用
创建
一个
与原来进程几乎完全相同的进程, 也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个
进程
调用
fork
()
函数
后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来...
c++
中
的
fork
函数
_
fork
函数
的作用_
fork
函数
创建进程
fork
函数
的作用在Linux
中
fork
函数
是非常重要的
函数
,它的作用是从已经存在的进程
中
创建
一个
子进程,而原进程称为父进程。
调用
fork
(),当控制转移到内核
中
的
fork
代码后,内核开始做:1.分配新的内存块和内核数据结构给子进程。2.将父进程部分数据结构内容拷贝至子进程。3.将子进程添加到系统进程列表。4.
fork
返回开始调度器,调度。来段代码:1#include《stdio.h》2#incl...
fork
函数
详解
首先了解什么是
fork
?
一个
进程,包括代码、数据和分配给进程的资源。
fork
()
函数
通过系统
调用
创建
一个
与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个
进程
调用
fork
()
函数
后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程
中
,只有少数值与原来的进程的值不同。 上面的话通俗理解就是:
fork
是复制进程的
函数
,程序一开始就会产生
一个
进程,当这个进程(代码)执行到
fork
Linux/Unix社区
23,118
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章