新用户,如果这个解释不够清楚,我很抱歉......我在创建要在多个源文件之间修改/使用的 timespec 变量时遇到问题。我的程序旨在确定从我的初始程序中执行另一个程序所需的时间,因此我需要在两个源文件中记录时间并将其存储以供以后使用以确定时间差。我一直在网上搜索并尝试了不同的东西,但似乎我的源文件总是创建不同的变量实例
这是我的代码基本上看起来的样子:
头文件:
//shared.h
#ifndef shared_h
#define shared_h
#include<time.h>
extern struct timespec callTime, startTime;
#endif
源文件1:
//shared.c
#include "shared.h"
struct timespec startTime = {0}, callTime = {0};
源文件2:
//app.c
#include "shared.h"
#include <time.h>
void main(){
clock_gettime(CLOCK_MONOTONIC, &startTime);
}//end of main
源文件:
//timer.c
#include "shared.h"
#include <time.h>
void main(){
pid_t pid = fork();
clock_gettime(CLOCK MONOTONIC, &callTime);
if(pid == 0){
execvp("./app", NULL);
return 0;
}//end of if
printf("Call: %ld & Start: %ld\n", callTime.tv_sec, startTime.tv_sec);
return 0;
}//end of main
我会得到类似...
致电:14928304940 & 开始:0
希望这段代码能够理解我正在尝试做的事情。当它派生并执行另一个程序时, startTime 的值会改变但不会保持,因此当我稍后在父进程中调用它时。该值将只是它的初始值而不是时钟时间。似乎对此事的任何想法将不胜感激!
补充说明:我将 shared.c 与 timer.c 和 app.c 分别链接,然后运行 timer.c
gcc shared.h
gcc -c shared.c
gcc -c app.c
gcc -c timer.c
gcc -o app app.o shared.o
gcc timer.o shared.o
./a.out