Je suis en train de me poser une question bête... Comment connaître
de façon _portable_ le PID maximal sur un système donné ? POSIX dit-il
quelque chose là-dessus ? Je n'ai rien trouvé de probant...
Cordialement,
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 22-11-2008, ? propos de Re: PID max ?, Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
Je suppose comme il existe pthread_kill() qu'on peut envoyer un signal à un thread et que cela fonctionne comme kill() (en gros que je peux envoyer un signal depuis un processus à un thread d'un autre processus pour peu que j'en aie les droits).
Lire la norme, ça peut aider, de temps en temps :
The pthread_kill() function provides a mechanism for asynchronously directing a signal at a thread in the calling process.
J'attire ton attention sur les quatre derniers mots.
Merci pour cet éclairage. Juste quelques remarques supplémentaires :
1/ Je n'ai pas la norme sous la main parce que je me méfie des implantations sur les différents systèmes et des interprétations de temps en temps baroques. Je me réfère donc plus généralement aux pages man (ou info) des OS qu'à la norme POSIX brute.
2/ Je n'ai mention de ces quatre mots ni dans la doc Linux, ni dans celle de NetBSD (4.0.1), ni dans celle de FreeBSD, ni encore dans celle de Solaris 9 ou 10. Si aucun de ces systèmes ne prend la peine de mentionner un tel truc, je suis donc en droit de me poser la question ou de la poser ici. J'ajouterai aussi que la couche de compatibilité POSIX d'OpenVMS 8.3 ne mentionne pas non plus ces quatre mots. D'ailleurs sous VMS, je peux envoyer un signal d'un processus à un thread particulier d'un autre processus et _ça fonctionn parfaitement_.
3/ Avant de poser une question, j'ai pour habitude de lire la doc et de faire des tests.
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 22-11-2008, ? propos de
Re: PID max ?,
Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message <slrngig217.dgl.knatschke@rayleigh.systella.fr>:
Je suppose comme il
existe pthread_kill() qu'on peut envoyer un signal à un thread et que
cela fonctionne comme kill() (en gros que je peux envoyer un signal
depuis un processus à un thread d'un autre processus pour peu que j'en
aie les droits).
Lire la norme, ça peut aider, de temps en temps :
The pthread_kill() function provides a mechanism for asynchronously
directing a signal at a thread in the calling process.
J'attire ton attention sur les quatre derniers mots.
Merci pour cet éclairage. Juste quelques remarques supplémentaires :
1/ Je n'ai pas la norme sous la main parce que je me méfie des
implantations sur les différents systèmes et des interprétations de
temps en temps baroques. Je me réfère donc plus généralement aux pages
man (ou info) des OS qu'à la norme POSIX brute.
2/ Je n'ai mention de ces quatre mots ni dans la doc Linux, ni dans
celle de NetBSD (4.0.1), ni dans celle de FreeBSD, ni encore dans celle de
Solaris 9 ou 10. Si aucun de ces systèmes ne prend la peine de
mentionner un tel truc, je suis donc en droit de me poser la question ou
de la poser ici. J'ajouterai aussi que la couche de compatibilité POSIX
d'OpenVMS 8.3 ne mentionne pas non plus ces quatre mots. D'ailleurs sous
VMS, je peux envoyer un signal d'un processus à un thread particulier
d'un autre processus et _ça fonctionn parfaitement_.
3/ Avant de poser une question, j'ai pour habitude de lire la doc et
de faire des tests.
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 22-11-2008, ? propos de Re: PID max ?, Nicolas George ?crivait dans fr.comp.os.unix :
JKB wrote in message :
Je suppose comme il existe pthread_kill() qu'on peut envoyer un signal à un thread et que cela fonctionne comme kill() (en gros que je peux envoyer un signal depuis un processus à un thread d'un autre processus pour peu que j'en aie les droits).
Lire la norme, ça peut aider, de temps en temps :
The pthread_kill() function provides a mechanism for asynchronously directing a signal at a thread in the calling process.
J'attire ton attention sur les quatre derniers mots.
Merci pour cet éclairage. Juste quelques remarques supplémentaires :
1/ Je n'ai pas la norme sous la main parce que je me méfie des implantations sur les différents systèmes et des interprétations de temps en temps baroques. Je me réfère donc plus généralement aux pages man (ou info) des OS qu'à la norme POSIX brute.
2/ Je n'ai mention de ces quatre mots ni dans la doc Linux, ni dans celle de NetBSD (4.0.1), ni dans celle de FreeBSD, ni encore dans celle de Solaris 9 ou 10. Si aucun de ces systèmes ne prend la peine de mentionner un tel truc, je suis donc en droit de me poser la question ou de la poser ici. J'ajouterai aussi que la couche de compatibilité POSIX d'OpenVMS 8.3 ne mentionne pas non plus ces quatre mots. D'ailleurs sous VMS, je peux envoyer un signal d'un processus à un thread particulier d'un autre processus et _ça fonctionn parfaitement_.
3/ Avant de poser une question, j'ai pour habitude de lire la doc et de faire des tests.
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
talon
JKB wrote:
Le 22-11-2008, ? propos de Re: PID max ?, Nicolas George ?crivait dans fr.comp.os.unix : > JKB wrote in message : >> Je suppose comme il >> existe pthread_kill() qu'on peut envoyer un signal à un thread et que >> cela fonctionne comme kill() (en gros que je peux envoyer un signal >> depuis un processus à un thread d'un autre processus pour peu que j'en >> aie les droits). > > Lire la norme, ça peut aider, de temps en temps : > > The pthread_kill() function provides a mechanism for asynchronously > directing a signal at a thread in the calling process. > > J'attire ton attention sur les quatre derniers mots.
Merci pour cet éclairage. Juste quelques remarques supplémentaires :
1/ Je n'ai pas la norme sous la main parce que je me méfie des implantations sur les différents systèmes et des interprétations de temps en temps baroques. Je me réfère donc plus généralement aux pages man (ou info) des OS qu'à la norme POSIX brute.
2/ Je n'ai mention de ces quatre mots ni dans la doc Linux, ni dans celle de NetBSD (4.0.1), ni dans celle de FreeBSD, ni encore dans celle de Solaris 9 ou 10. >
L'implémentation de FreeBSD est complètement inspirée par le livre de Butenhof, qui insiste lourdement sur le fait que les threads dans un processus n'ont pas à savoir ce qui se passe dans les threads d'un autre processus. Par exemple un kill envoyé sur un processus peut être attrapé par n'importe quel thread du processus. C'est justement une des raisons pour lesquelles l'ancienne implémentation de Linux n'était pas conformante en associant un PID différent à chaque thread. De même les threads ne sont pas faits pour faire de l'IO asynchrone comme tu le souhaites, tu crées un thread pour faire l'IO de manière synchrone, et il attend sagement la fin de l'IO, ce qui ne coute pas grand chose car tu peux créér beaucoup de threads. Eventuellement un pthread_join complète le boulot.
A titre d'info, tu peux trouver le livre de Butenhof piraté en cherchant _djvu dans google .... si tu ne l'as pas. Sa lecture est absolument indispensable, car les threads posix ne sont pas intuitifs.
--
Michel TALON
JKB <knatschke@koenigsberg.fr> wrote:
Le 22-11-2008, ? propos de
Re: PID max ?,
Nicolas George ?crivait dans fr.comp.os.unix :
> JKB wrote in message <slrngig217.dgl.knatschke@rayleigh.systella.fr>:
>> Je suppose comme il
>> existe pthread_kill() qu'on peut envoyer un signal à un thread et que
>> cela fonctionne comme kill() (en gros que je peux envoyer un signal
>> depuis un processus à un thread d'un autre processus pour peu que j'en
>> aie les droits).
>
> Lire la norme, ça peut aider, de temps en temps :
>
> The pthread_kill() function provides a mechanism for asynchronously
> directing a signal at a thread in the calling process.
>
> J'attire ton attention sur les quatre derniers mots.
Merci pour cet éclairage. Juste quelques remarques supplémentaires :
1/ Je n'ai pas la norme sous la main parce que je me méfie des
implantations sur les différents systèmes et des interprétations de
temps en temps baroques. Je me réfère donc plus généralement aux pages
man (ou info) des OS qu'à la norme POSIX brute.
2/ Je n'ai mention de ces quatre mots ni dans la doc Linux, ni dans
celle de NetBSD (4.0.1), ni dans celle de FreeBSD, ni encore dans celle de
Solaris 9 ou 10. >
L'implémentation de FreeBSD est complètement inspirée par le livre de
Butenhof, qui insiste lourdement sur le fait que les threads dans un
processus n'ont pas à savoir ce qui se passe dans les threads d'un autre
processus. Par exemple un kill envoyé sur un processus peut être
attrapé par n'importe quel thread du processus. C'est justement une
des raisons pour lesquelles l'ancienne implémentation de Linux n'était
pas conformante en associant un PID différent à chaque thread. De même
les threads ne sont pas faits pour faire de l'IO asynchrone comme tu le
souhaites, tu crées un thread pour faire l'IO de manière synchrone, et
il attend sagement la fin de l'IO, ce qui ne coute pas grand chose car
tu peux créér beaucoup de threads. Eventuellement un pthread_join
complète le boulot.
A titre d'info, tu peux trouver le livre de Butenhof piraté en cherchant
_djvu dans google .... si tu ne l'as pas. Sa lecture est absolument
indispensable, car les threads posix ne sont pas intuitifs.
Le 22-11-2008, ? propos de Re: PID max ?, Nicolas George ?crivait dans fr.comp.os.unix : > JKB wrote in message : >> Je suppose comme il >> existe pthread_kill() qu'on peut envoyer un signal à un thread et que >> cela fonctionne comme kill() (en gros que je peux envoyer un signal >> depuis un processus à un thread d'un autre processus pour peu que j'en >> aie les droits). > > Lire la norme, ça peut aider, de temps en temps : > > The pthread_kill() function provides a mechanism for asynchronously > directing a signal at a thread in the calling process. > > J'attire ton attention sur les quatre derniers mots.
Merci pour cet éclairage. Juste quelques remarques supplémentaires :
1/ Je n'ai pas la norme sous la main parce que je me méfie des implantations sur les différents systèmes et des interprétations de temps en temps baroques. Je me réfère donc plus généralement aux pages man (ou info) des OS qu'à la norme POSIX brute.
2/ Je n'ai mention de ces quatre mots ni dans la doc Linux, ni dans celle de NetBSD (4.0.1), ni dans celle de FreeBSD, ni encore dans celle de Solaris 9 ou 10. >
L'implémentation de FreeBSD est complètement inspirée par le livre de Butenhof, qui insiste lourdement sur le fait que les threads dans un processus n'ont pas à savoir ce qui se passe dans les threads d'un autre processus. Par exemple un kill envoyé sur un processus peut être attrapé par n'importe quel thread du processus. C'est justement une des raisons pour lesquelles l'ancienne implémentation de Linux n'était pas conformante en associant un PID différent à chaque thread. De même les threads ne sont pas faits pour faire de l'IO asynchrone comme tu le souhaites, tu crées un thread pour faire l'IO de manière synchrone, et il attend sagement la fin de l'IO, ce qui ne coute pas grand chose car tu peux créér beaucoup de threads. Eventuellement un pthread_join complète le boulot.
A titre d'info, tu peux trouver le livre de Butenhof piraté en cherchant _djvu dans google .... si tu ne l'as pas. Sa lecture est absolument indispensable, car les threads posix ne sont pas intuitifs.
--
Michel TALON
naddy
Nicolas George <nicolas$ wrote:
Aucune garantie. Un pthread_t pourrait très bien être un pointeur, pour ce qu'on en sait.
2/ Je n'ai mention de ces quatre mots ni ... ni encore dans celle de Solaris 9 ou 10.
Dans http://docs.sun.com/app/docs/doc/801-6659/6i116aqmf?l=en&a=view#02.Programming_With_Threads-6
Send a Signal to a Thread thr_kill(3T)
thr_kill() sends a signal to a thread.
#include <thread.h> #include <signal.h>
int thr_kill(thread_t target_thread, int sig);
thr_kill() sends the signal sig to the thread specified by target_thread. target_thread must be a thread within the same process as ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the calling thread. The sig argument must be from the list given in signal(5).
--
Michel TALON
JKB <knatschke@koenigsberg.fr> wrote:
2/ Je n'ai mention de ces quatre mots ni ... ni encore dans celle de
Solaris 9 ou 10.
Dans
http://docs.sun.com/app/docs/doc/801-6659/6i116aqmf?l=en&a=view#02.Programming_With_Threads-6
Send a Signal to a Thread
thr_kill(3T)
thr_kill() sends a signal to a thread.
#include <thread.h>
#include <signal.h>
int thr_kill(thread_t target_thread, int sig);
thr_kill() sends the signal sig to the thread specified by
target_thread. target_thread must be a thread within the same process as
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
the calling thread. The sig argument must be from the list given in
signal(5).
2/ Je n'ai mention de ces quatre mots ni ... ni encore dans celle de Solaris 9 ou 10.
Dans http://docs.sun.com/app/docs/doc/801-6659/6i116aqmf?l=en&a=view#02.Programming_With_Threads-6
Send a Signal to a Thread thr_kill(3T)
thr_kill() sends a signal to a thread.
#include <thread.h> #include <signal.h>
int thr_kill(thread_t target_thread, int sig);
thr_kill() sends the signal sig to the thread specified by target_thread. target_thread must be a thread within the same process as ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the calling thread. The sig argument must be from the list given in signal(5).