首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kill -9或ctrl+c会推迟所有已经在C中调用的函数吗?

kill -9或ctrl+c会推迟所有已经在C中调用的函数吗?
EN

Stack Overflow用户
提问于 2012-01-22 19:58:30
回答 2查看 101关注 0票数 1

我有下面的代码

代码语言:javascript
复制
#include <stdio.h>

int main(){

int i=0;
    for(i=0; i<1000; i++) {
    int count2 = 2;
    test_val(count2);
    sleep(1);
    printf("zzz..\n");
    }
    return 1;
}

int test_val(count)
{
  FILE *p;
  p = fopen("test.txt", "ab");
    if(p == NULL)
    {
      printf("Unable to open file!");
     return 0;
    }
 fprintf(p, "count is %d\n", count);

return 1;

}

我用"test“的名字编译了这个函数,使用这个函数,它将打印2到1000次。如果此函数运行正确,它会将所有内容放入test.txt中。但是,如果我在迭代过程中(假设我已经运行了500次迭代),我运行kill-9测试(或ctrl+c),它将终止程序。

我以为一开始我会在test.txt中得到至少500次"count is 2“的打印(直到我发送了一个kill信号),但实际上并非如此。如果我等到程序结束,然后打印"count is 2.实际发生了什么?

我需要做一个程序,它可以在迭代过程中取消,并且仍然可以打印到文本中kill execution之前的最新迭代。

感谢您的回复

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-22 20:09:23

stdio I/O函数是缓冲的,C库保留一个缓冲区,并在某些情况下刷新它。您可以使用fflush()显式刷新输出缓冲区。fclose()在关闭文件之前执行隐式刷新。

票数 2
EN

Stack Overflow用户

发布于 2012-01-22 20:08:00

您应该将fclose(p)放在test_val()的末尾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8960875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档