我的电脑显示屏黑屏了怎么回事?哪位大哥大姐帮帮忙看是什么问题?谢谢了1
最开始出现这种状况的时候,闪不闪?是直接就像现在这样黑屏么? 如果闪,可能是你的显示器高压包附近的电容出问题了,可能有爆浆,最好拿去检修下,换个电源版试试哪位大哥哥帮我看下下面的问题,谢谢!
感觉没有区别 都是执行各自的close 函数
实际测试了一下
把你的代码改成
#include
#include
#include
#include
#include
#include
intisprime(intnum)
{
inti;
if(num<2)
return0;
else
{
for(i=2;i{
if(num%i==0)
{
return0;
}
}
}
return1;
}
intmain()
{
inti=0;
intnum=0;
intfd=open("prime.txt",O_RDWR|O_CREAT|O_TRUNC,0777);
if(fd==-1)
{
printf("%m");
exit(-1);
}
if(fork())
{
for(i=1;i<=5000;i++)
{
if(isprime(i))
{
write(fd,&i,4);
}
}
}
else
{
for(i=5001;i<=10000;i++)
{
if(isprime(i))
{
write(fd,&i,4);
}
}
}
close(fd);
return0;
}
然后循环执行100次 每次生成的prime.txt 都是4916字节
需要注意的是 由于有一半的数据是通过fork出来的子进程执行的
所以完全有可能你运行的程序已经退出 可是fork进程还没有执行完 所以查看prime.txt的时候适当的延后一些 确保程序已经完全执行完毕
或者在退出时加一个打印 这样可以明确知道fork是否执行完毕
如果在fork退出前查看文件大小 会出现你说的问题 不过即使是分别close也该有同样问题