Excahnged clock() with gettimeofday()

This commit is contained in:
Sergiusz Warga 2021-03-10 22:08:21 +01:00
parent b4a3c3aeae
commit 79fc63135b
2 changed files with 20 additions and 11 deletions

3
.gitignore vendored
View File

@ -3,3 +3,6 @@ cmake-build-debug
CMakeLists.txt CMakeLists.txt
.idea .idea
*.o *.o
# Apple
.DS_Store

View File

@ -4,11 +4,20 @@
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <signal.h> #include <signal.h>
#include <time.h> #include <time.h>
const char * time_from_main_exec() {
struct timeval now;
gettimeofday(&now, NULL);
char buff[127];
sprintf(&buff, "us : %d", now.tv_usec);
return buff;
}
void parent_before_child() { void parent_before_child() {
pid_t pid; pid_t pid;
printf("\nparent_before_child()\n"); printf("\nparent_before_child()\n");
@ -18,11 +27,11 @@ void parent_before_child() {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (pid != 0) { // If this is a parent process. if (pid != 0) { // If this is a parent process.
printf("===\nI am a parent.\nMy PID is: %d\n===", getpid()); printf("===\n%s\nI am a parent.\nMy PID is: %d\n===", time_from_main_exec(), getpid());
kill(getpid(), SIGTERM); kill(getpid(), SIGTERM);
} else { } else {
sleep(1); sleep(1);
printf("===\nI am a child.\nMy PID is: %d\n===", getpid()); // This line will not be printed, as (usually) parent process will finish printf("===\n%s\nI am a child.\nMy PID is: %d\n===", time_from_main_exec(), getpid()); // This line will not be printed, as (usually) parent process will finish
// its execution in less than 1 second // its execution in less than 1 second
} }
} }
@ -37,31 +46,28 @@ void child_before_parent() {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (pid == 0) { // If this is a parent process. if (pid == 0) { // If this is a parent process.
printf("===\nI am a child.\nMy PID is: %d\n===", getpid()); printf("===\n%s\nI am a child.\nMy PID is: %d\n===", time_from_main_exec(), getpid());
kill(getpid(), SIGTERM); kill(getpid(), SIGTERM);
} else { } else {
sleep(1); sleep(1);
printf("===\nI am a parent.\nMy PID is: %d\n===", getpid()); printf("===\n%s\nI am a parent.\nMy PID is: %d\n===", time_from_main_exec(), getpid());
} }
} }
double time_from_exec(clock_t begin) {
return (double)(clock() - begin)/CLOCKS_PER_SEC;
}
int main() { int main() {
clock_t begin = clock();
pid_t pid; pid_t pid;
printf("%f: Grandparent process has PID: %d\n", time_from_exec(begin), getpid()); printf("%s: Grandparent process has PID: %d\n", time_from_main_exec(), getpid());
pid = fork(); pid = fork();
if (pid == 0) { // If child process if (pid == 0) { // If child process
printf("%f: Process with PID %d will execute funs.\n", time_from_exec(begin), getpid()); printf("%s: Process with PID %d will execute funs.\n", time_from_main_exec(), getpid());
child_before_parent(); child_before_parent();
sleep(1); sleep(1);
parent_before_child(); parent_before_child();
sleep(1); sleep(1);
} else { // If parent process } else { // If parent process
printf("%f: Grandparent's child process has PID: %d\n", time_from_exec(begin), pid); printf("%s: Grandparent's child process has PID: %d\n", time_from_main_exec(), pid);
sleep(5); sleep(5);
} }
return 0; return 0;