Reader Writer Problem
This commit is contained in:
48
System2/RW_problem/tprintf.c
Normal file
48
System2/RW_problem/tprintf.c
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Utilitaire printf estampille : a reutiliser ...
|
||||
print et fprintf prefixes par "seconds:microsecondes:pid: " ou "seconds:microsecondes:pid:tid: "
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <stdarg.h>
|
||||
#include <sys/time.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "tprintf.h"
|
||||
|
||||
|
||||
|
||||
/* printf estampille : a reutiliser ... */
|
||||
|
||||
int tprintf(const char * message, ... ) {
|
||||
va_list liste;
|
||||
char chaine [1000];
|
||||
struct timeval t;
|
||||
int pid = getpid();
|
||||
int tid = (int) syscall(SYS_gettid);
|
||||
va_start(liste, message);
|
||||
gettimeofday( &t, NULL);
|
||||
vsprintf(chaine, message, liste);
|
||||
if ( pid == tid )
|
||||
return printf("%ld:%ld:%i: %s", t.tv_sec, t.tv_usec, pid, chaine );
|
||||
else
|
||||
return printf("%ld:%ld:%i:%i %s", t.tv_sec, t.tv_usec, pid, tid, chaine );
|
||||
}
|
||||
|
||||
int tfprintf(FILE * stream, const char * message, ... ) {
|
||||
va_list liste;
|
||||
char chaine [1000];
|
||||
struct timeval t;
|
||||
int pid = getpid();
|
||||
int tid = (int) syscall(SYS_gettid);
|
||||
va_start(liste, message);
|
||||
gettimeofday( &t, NULL);
|
||||
vsprintf(chaine, message, liste);
|
||||
if ( pid == tid )
|
||||
return fprintf(stream, "%ld:%ld:%i: %s", t.tv_sec, t.tv_usec, pid, chaine );
|
||||
else
|
||||
return fprintf(stream, "%ld:%ld:%i:%i %s", t.tv_sec, t.tv_usec, pid, tid, chaine );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user