找一个30分钟的文件

时间:2014-06-05 10:52:37

标签: unix time find

如何在/bin/ksh中找到30分钟的文件?

2 个答案:

答案 0 :(得分:1)

第一次for循环运行获得(..)3次,第二次4次,但最后一次没有for循环的主体

答案 1 :(得分:0)

首先要做的事情:请告诉我你永远不会在生产代码中使用它。这是一堆cr * p。

关于两者之间差异的问题,让我们看看。

在第一个循环中,您在使用gets()之前检查条件,这意味着循环执行了三次。

在第二个循环中,您在检查循环条件之前使用gets,因此执行了四次。循环本身永远不会被执行,或者我们的数组边界会有问题。

令我惊讶的是,这两个循环都没有抱怨(好吧,执行时,有这个“警告:这个程序使用了gets(),这是不安全的。”消息,但是哦,好吧;什么不是程序?)。

作为参考,我用它作为参考(请注意我尽力使它...运行):

#include <stdio.h>

#define MAX 3

int main(){
    char names[MAX][MAX];
    char *nameptr[MAX];
    int n;
    for(n = 0; n < MAX; n++){
        nameptr[n] = gets(names[n]);
        printf("%s", nameptr[n]);
    }

    for(n = 0; gets(names[n]) && n < MAX; n++){
        nameptr[n] = names[n];
        printf("%s", nameptr[n]);
    }

    free(nameptr);
    return 0;
}

这可能是我写过的最糟糕的代码,但这没关系。我的Mac必须忍受这一点。如上所述,该程序实际运行。如果你仔细观察,你会注意到除了最后一个输入之外所有输入都是重复的(因为那个时间printf()永远不会被调用)。

但是valgrind告诉我们什么(记忆检查器)?这与问题无关,但它是你弄乱你的记忆所得到的。

当我运行valgrind --leak-check=full ./a.out时,这是摘要:

==12822== HEAP SUMMARY:
==12822==     in use at exit: 33,265 bytes in 376 blocks
==12822==   total heap usage: 453 allocs, 77 frees, 39,233 bytes allocated
==12822== 
==12822== LEAK SUMMARY:
==12822==    definitely lost: 0 bytes in 0 blocks
==12822==    indirectly lost: 0 bytes in 0 blocks
==12822==      possibly lost: 0 bytes in 0 blocks
==12822==    still reachable: 8,192 bytes in 2 blocks
==12822==         suppressed: 25,073 bytes in 374 blocks
==12822== Reachable blocks (those to which a pointer was found) are not shown.

仅供参考,当我删除对free()的调用时(我真的在没有* alloc的情况下使用它,不是吗?),这就是:

==12818== HEAP SUMMARY:
==12818==     in use at exit: 33,265 bytes in 376 blocks
==12818==   total heap usage: 453 allocs, 77 frees, 39,233 bytes allocated
==12818== 
==12818== LEAK SUMMARY:
==12818==    definitely lost: 0 bytes in 0 blocks
==12818==    indirectly lost: 0 bytes in 0 blocks
==12818==      possibly lost: 0 bytes in 0 blocks
==12818==    still reachable: 8,192 bytes in 2 blocks
==12818==         suppressed: 25,073 bytes in 374 blocks

完全相同。奇怪,是吧?嗯,不是那么多,因为没有明确分配任何东西,所以它怎么能被释放?我正要测量运行时效率,但我真的太懒了。

同样,这段代码确实非常非常糟糕。