社区
C语言
帖子详情
这个程序的结果是?原因?
bbjjll0331
2010-01-30 04:00:26
1 #include <stdio.h>
2 #include <unistd.h>
3 int main(void)
4 {
5 pid_t pid;
6
7 write(1, "hello", sizeof("hello"));
8
9 printf(" world!\r");
10 //fflush(NULL);
11
12 pid = fork();
13
14 return 0;
15 }
...全文
92
12
打赏
收藏
这个程序的结果是?原因?
1 #include 2 #include 3 int main(void) 4 { 5 pid_t pid; 6 7 write(1, "hello", sizeof("hello")); 8 9 printf(" world!\r"); 10 //fflush(NULL); 11 12 pid = fork(); 13 14 return 0; 15 }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tianjinno04
2010-01-30
打赏
举报
回复
还有,7楼正解
smilefox
2010-01-30
打赏
举报
回复
D:\code\test\main1.c(2) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
哈哈,unistd.h 这个在unix/linux下才有的
你是在windows上编译的吧?
你这个程序用到了fork pid_t这些,只能在unix/linux下编译。。。
bbjjll0331
2010-01-30
打赏
举报
回复
[Quote=引用 7 楼 hpsmouse 的回复:]
晕,你是说那个 \r 啊。
\r 是把光标移动到一行开头(不换行),于是程序退出的时候命令行的提示符就把输出覆盖掉了。
这样效果比较明显:
printf(" world!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r");
还有那个 sizeof("hello") 也是有问题的,会把最后的 \0 一起算在内(不过好像可以无视之)。
[/Quote]
OK,知道了,谢谢。
原来的程序改为:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
pid_t pid;
write(1, "hellobbbbbbbbbbbbbbbbb", sizeof("hellobbbbbbbbbbbbbbbb"));
printf(" world!\r");
fork();
return 0;
}
这样就可以看到效果了.其实原来加了\r也已经输出了,只不过没换行被遮挡住了。
bbjjll0331
2010-01-30
打赏
举报
回复
[Quote=引用 8 楼 tianjinno04 的回复:]
为什么要PID = fork();??
[/Quote]
对于这个程序里来说加个PID=没用。
tianjinno04
2010-01-30
打赏
举报
回复
为什么要PID = fork();??
鼠
2010-01-30
打赏
举报
回复
晕,你是说那个 \r 啊。
\r 是把光标移动到一行开头(不换行),于是程序退出的时候命令行的提示符就把输出覆盖掉了。
这样效果比较明显:
printf(" world!aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r");
还有那个 sizeof("hello") 也是有问题的,会把最后的 \0 一起算在内(不过好像可以无视之)。
bbjjll0331
2010-01-30
打赏
举报
回复
原程序改为下面这样就可以正常输出,但是把\n改为\r后,再加上fflush(NULL)都不显示结果,是什么原因?
1 #include <stdio.h>
2 #include <unistd.h>
3 int main(void)
4 {
5 pid_t pid;
6
7 write(1, "hello", sizeof("hello"));
8
9 printf(" world!\n");
11
12 pid = fork();
13
14 return 0;
15 }
bbjjll0331
2010-01-30
打赏
举报
回复
[Quote=引用 4 楼 hpsmouse 的回复:]
如果不执行 fflush 的话,fork 的时候输出缓冲还没有刷新,所以 fork 以后两个进程都会输出。
[/Quote]
但是这个没结果所怎么回事?
1 #include <stdio.h>
2 #include <unistd.h>
3 int main(void)
4 {
5 pid_t pid;
6
7 write(1, "hello", sizeof("hello"));
8
9 printf(" world!\r");
10 fflush(NULL);
11
12 pid = fork();
13
14 return 0;
15 }
鼠
2010-01-30
打赏
举报
回复
如果不执行 fflush 的话,fork 的时候输出缓冲还没有刷新,所以 fork 以后两个进程都会输出。
Bird_Conan
2010-01-30
打赏
举报
回复
D:\code\test\main1.c(2) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
lovesi3344
2010-01-30
打赏
举报
回复
fflush(); 好像没有参数才对哦
bbjjll0331
2010-01-30
打赏
举报
回复
错了 ,是把第10行//去掉
Eclipse 答疑:为什么在 Eclipse 中,运行本
程序
却是另外一个
程序
的结果?
你使用 Eclipse 敲代码的时候,有没有遇到过这样一种情况,明明我点击运行本
程序
结果却是另外一个
程序
的结果?这是为什么呢?话不多说,我们从实际案例来分析错误
原因
。
为什么在Eclipse中,运行一个
程序
时却出现另一个
程序
的结果?
在一些朋友的学习过程中,我们可能在使用Eclipse时,运行一个刚刚敲好的代码,出现的结果却是上一个或者另一个
程序
的结果,出现牛头不对马嘴的情况。那这是为什么呢?现在我用实例来帮大家解决。 问题描述: 现在...
python
程序
不报错但是_python
程序
没有报错但是运行没有任何结果怎么办?
python
程序
没有报错运行没有任何结果怎么办?可以从以下情况进行分析:1.没有语法错误不代表没有逻辑错误IDE工具毕竟不是人工智能,即使是人工智能也能力有限我们可以新建一个地方写一个输出看是否能正常运行,可以...
什么是缓冲区溢出?有什么危害?
原因
是什么?
缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,...
原因
:造成缓冲区溢出的主要
原因
是
程序
中没有仔细检查用户输入。 所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的...
c/c++
程序
运行不出结果?
c/c++
程序
没结果
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章