社区
Linux/Unix社区
帖子详情
进程休眠(附程序)
manespz
2007-06-20 05:24:54
main()
{
pid_t pid;
if((pid=fork())<0)
printf("fork error\r\n");
else if (pid==0)
{
while(1)
{
printf("ssss");
sleep(1);
}
}
printf("222");
}
为什么这个程序一直没有ssss输出呢,是不是我sleep的有问题?
...全文
328
9
打赏
收藏
进程休眠(附程序)
main() { pid_t pid; if((pid=fork())<0) printf("fork error\r\n"); else if (pid==0) { while(1) { printf("ssss"); sleep(1); } } printf("222"); } 为什么这个程序一直没有ssss输出呢,是不是我sleep的有问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cceczjxy
2007-06-21
打赏
举报
回复
主进程退出了,子进程跟着也退出了,所以没打出来.
你可以试着多运行几次,运气好的话可看见打出ssss来。
和os的进程调度有关。
在printf("222")后面加个getchar();
就能一直打ssss了
--------------------
子进程怎么可能退出呢?
子进程一直在打印"ssss",只是在缓冲区里,所以看不到。
"ssss\n"加换行会吧缓冲区写到终端,就能看见了。
----------------------------------------------
在有些unix系统中是会退出的.
OstrichFly
2007-06-21
打赏
举报
回复
main()
{
pid_t pid;
if((pid=fork())<0)
printf("fork error\r\n");
else if (pid==0)
{
while(1)
{
printf("ssss");
fflush(NULL);
sync();
sleep(1);
}
}
printf("222");
sleep(5);
}
zzx4493
2007-06-21
打赏
举报
回复
楼上的都正解
如果要更好的理解的话,不光可以加"\n"来换行刷新缓冲。也可以在printf("ssss")后面加一个fflush(stdout)来刷新缓冲区,同时把里面的内容打印到输出。
不过这个程序和进程休眠有什么很大的关系?sleep()?
manespz
2007-06-21
打赏
举报
回复
多谢大家。
dai_weitao
2007-06-20
打赏
举报
回复
公用stdout缓冲区, 如果在终端输出则是行缓冲, 两个进程在缓冲区上发生竞态.
umbrella1984
2007-06-20
打赏
举报
回复
楼上正解,终端是行缓冲的,要想看见要么加\n要么设置无缓冲
mymtom
2007-06-20
打赏
举报
回复
主进程退出了,子进程跟着也退出了,所以没打出来.
你可以试着多运行几次,运气好的话可看见打出ssss来。
和os的进程调度有关。
在printf("222")后面加个getchar();
就能一直打ssss了
--------------------
子进程怎么可能退出呢?
子进程一直在打印"ssss",只是在缓冲区里,所以看不到。
"ssss\n"加换行会吧缓冲区写到终端,就能看见了。
NC
2007-06-20
打赏
举报
回复
主进程退出了,子进程跟着也退出了,所以没打出来.
你可以试着多运行几次,运气好的话可看见打出ssss来。
和os的进程调度有关。
在printf("222")后面加个getchar();
就能一直打ssss了
mymtom
2007-06-20
打赏
举报
回复
printf("ssss\n");
vc++ 应用源码包_1
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、
程序
窗口、
程序
控制、
进程
与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、
程序
...
易语言
程序
免安装版下载
即,新版支持库可被旧版易语言或易
程序
使用,旧版支持库也可被新版易语言或易
程序
使用(只是不支持静态编译)。 静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个...
vc++ 应用源码包_2
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、
程序
窗口、
程序
控制、
进程
与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、
程序
...
vc++ 应用源码包_6
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、
程序
窗口、
程序
控制、
进程
与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、
程序
...
vc++ 应用源码包_5
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、
程序
窗口、
程序
控制、
进程
与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、
程序
...
Linux/Unix社区
23,116
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章