Bash-Linux.com : Le SHELL pour les nuls

  Actuellement 50 lignes de commande et 1472 man disponibles
login as: root
root@213.186.33.18's password:
Last login: Mon Feb 13 0:37:24 2012 from 38.107.179.227
[root@bash-linux ~] # echo "Bienvenue sur Bash-Linux.com"_
 Manuel des commandes UNIX (man) Version anglaise

Indiquez la fonction :

Man Pthread_atfork en anglais

PTHREAD_ATFORK(P) POSIX Programmer's Manual PTHREAD_ATFORK(P)
 
NAME


pthread_atfork - register fork handlers
 
SYNOPSIS


#include int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));
 
DESCRIPTION


The pthread_atfork() function shall declare fork handlers to be called before and after fork(), in the context of the thread that called fork(). The prepare fork handler shall be called before fork() process- ing commences. The parent fork handle shall be called after fork() pro- cessing completes in the parent process. The child fork handler shall be called after fork() processing completes in the child process. If no handling is desired at one or more of these three points, the corre- sponding fork handler address(es) may be set to NULL. The order of calls to pthread_atfork() is significant. The parent and child fork handlers shall be called in the order in which they were established by calls to pthread_atfork(). The prepare fork handlers shall be called in the opposite order.
 
RETURN VALUE


Upon successful completion, pthread_atfork() shall return a value of zero; otherwise, an error number shall be returned to indicate the error.
 
ERRORS


The pthread_atfork() function shall fail if: ENOMEM Insufficient table space exists to record the fork handler addresses. The pthread_atfork() function shall not return an error code of [EINTR]. The following sections are informative.
 
EXAMPLES


None.
 
APPLICATION USAGE


None.
 
RATIONALE


There are at least two serious problems with the semantics of fork() in a multi-threaded program. One problem has to do with state (for exam- ple, memory) covered by mutexes. Consider the case where one thread has a mutex locked and the state covered by that mutex is inconsistent while another thread calls fork(). In the child, the mutex is in the locked state (locked by a nonexistent thread and thus can never be unlocked). Having the child simply reinitialize the mutex is unsatis- factory since this approach does not resolve the question about how to correct or otherwise deal with the inconsistent state in the child. It is suggested that programs that use fork() call an exec function very soon afterwards in the child process, thus resetting all states. In the meantime, only a short list of async-signal-safe library routines are promised to be available. Unfortunately, this solution does not address the needs of multi- threaded libraries. Application programs may not be aware that a multi- threaded library is in use, and they feel free to call any number of library routines between the fork() and exec calls, just as they always have. Indeed, they may be extant single-threaded programs and cannot, therefore, be expected to obey new restrictions imposed by the threads library. On the other hand, the multi-threaded library needs a way to protect its internal state during fork() in case it is re-entered later in the child process. The problem arises especially in multi-threaded I/O libraries, which are almost sure to be invoked between the fork() and exec calls to effect I/O redirection. The solution may require locking mutex variables during fork(), or it may entail simply resetting the state in the child after the fork() processing completes. The pthread_atfork() function provides multi-threaded libraries with a means to protect themselves from innocent application programs that call fork(), and it provides multi-threaded application programs with a standard mechanism for protecting themselves from fork() calls in a library routine or the application itself. The expected usage is that the prepare handler acquires all mutex locks and the other two fork handlers release them. For example, an application can supply a prepare routine that acquires the necessary mutexes the library maintains and supply child and parent routines that release those mutexes, thus ensuring that the child gets a consistent snapshot of the state of the library (and that no mutexes are left stranded). Alternatively, some libraries might be able to supply just a child routine that reinitializes the mutexes in the library and all associated states to some known value (for example, what it was when the image was originally executed). When fork() is called, only the calling thread is duplicated in the child process. Synchronization variables remain in the same state in the child as they were in the parent at the time fork() was called. Thus, for example, mutex locks may be held by threads that no longer exist in the child process, and any associated states may be inconsis- tent. The parent process may avoid this by explicit code that acquires and releases locks critical to the child via pthread_atfork(). In addition, any critical threads need to be recreated and reinitialized to the proper state in the child (also via pthread_atfork()). A higher-level package may acquire locks on its own data structures before invoking lower-level packages. Under this scenario, the order specified for fork handler calls allows a simple rule of initialization for avoiding package deadlock: a package initializes all packages on which it depends before it calls the pthread_atfork() function for itself.
 
FUTURE DIRECTIONS


None.
 
SEE ALSO


atexit() , fork() , the Base Definitions volume of IEEE Std 1003.1-2001,
 
COPYRIGHT


Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE/The Open Group 2003 PTHREAD_ATFORK(P)


 Dernières recherches
Man  en anglais Man pthread_atfork en anglaisMan  en français Man pthread_atfork en français
Man  en anglais Man raise en anglaisMan  en français Man raise en français
Man  en anglais Man hypot en anglaisMan  en français Man hypot en français
Man  en anglais Man execl en anglaisMan  en français Man execl en français
Man  en anglais Man errno en anglaisMan  en français Man errno en français
Man  en anglais Man htons en anglaisMan  en français Man htons en français
Man  en anglais Man tkill en anglaisMan  en français Man tkill en français
Man  en anglais Man chdir en anglaisMan  en français Man chdir en français
Man  en anglais Man intro en anglaisMan  en français Man intro en français
Man  en anglais Man htonl en anglaisMan  en français Man htonl en français
Man  en anglais Man tail en anglaisMan  en français Man tail en français
Man  en anglais Man gcvt en anglaisMan  en français Man gcvt en français
Man  en anglais Man send en anglaisMan  en français Man send en français
Man  en anglais Man find en anglaisMan  en français Man find en français
Man  en anglais Man poll en anglaisMan  en français Man poll en français

 Recherche

Dans ce moteur de recherche, vous pouvez taper directement votre besoin, en une phrase normale, humaine.
Exemple : vous cherchez comment remplacer un mot par un autre dans tous les fichiers d'un certain dossier. Vous pouvez écrire "Comment remplacer un mot par un autre dans tous les fichiers d'un dossier". Le moteur vous ramenera les résultats en fonction de leur pertinence.
Vous pouvez bien sûr ne chercher qu'un seul mot-clé, par exemple "find".
 Toutes les lignes de code
Par popularité
Par fonction
Recherche avancée
 Les logiciels SHELL/SSH
Putty
Astuces Bash
Faire du SHELL avec PHP!
 La doc officielle
Les man Linux en français
Les man Linux en anglais
 Proposer vos bash
Partagez vos lignes!
 Les requêtes
Déposer une requête
Voir/répondre à une requête
 Quelques sites interessants
Bons sites pour apprendre
 Rechercher