gpt4 book ai didi

c - 如何计算C语言程序运行了多少次?

转载 作者:行者123 更新时间:2023-11-30 21:00:22 24 4
gpt4 key购买 nike

能否计算一个程序在 C 语言中运行了多少次?我需要设置一个计数器吗?例如:

#include <stdio.h>

int main()
{
int var1;
scanf("%d", &var1);

int var2;
scanf("%d", &var2);

int var3;

var3 =var1 + var2;

printf("The answer is = %d" , var3);

/* if (The program ran for more than two times) {
printf("The program is only allowed to run once or twice\n");
}
else {
printf("The answer = %d" , var3);
}*/

return 0;
}

如果程序运行超过两次,程序会显示一次错误信息并重新开始计数。

最佳答案

我们可以结合this answer通过一些简单的文件IO就可以达到想要的效果。

请注意,这是如何计算程序运行次数的一个示例。如果没有仔细考虑此答案下面的评论中指出的问题,请不要在任何安全敏感上下文中使用它。

#include <unistd.h>
#include <sys/file.h>
#include <stdio.h>


int main(){
int myCounterFd;
if ((myCounterFd = open ("/tmp/myappname.counter", O_CREAT | O_RDWR, 0666)) < 0) {
return -1;
}
if (flock (myCounterFd, LOCK_EX | LOCK_NB) < 0) {
return -1;
}
FILE* fp = fdopen(myCounterFd, "w+");
int count;
size_t error;
error = fread(&count, sizeof(count), 1, fp);

printf("Error = %zu\n", error);
// The program has never been run before
if (error < 1) {
count = 1;
fwrite(&count, sizeof(count), 1, fp);
} else{
count++;
rewind(fp);
fwrite(&count, sizeof(count), 1, fp);
}
fflush(fp);
printf("Program has now been run %d times.\n", count);

flock (myCounterFd, LOCK_UN);
close(myCounterFd);
}

关于c - 如何计算C语言程序运行了多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41886202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com