Excahnged clock() with gettimeofday()
This commit is contained in:
parent
b4a3c3aeae
commit
79fc63135b
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,3 +3,6 @@ cmake-build-debug
|
|||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
.idea
|
.idea
|
||||||
*.o
|
*.o
|
||||||
|
|
||||||
|
# Apple
|
||||||
|
.DS_Store
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user