2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Signum (signum) interregem est programmatis. Methodus est nuntiis inter processuum transmittendi. Solet notificare processum quem res incidit, sed aliquas notitias ad processum transire non potest.
Multae causae sunt quare signa generanturkill
etkillall
Praecipe signum mittere;
kill -信号的类型 进程编号
killall -信号的类型 进程名
signum nomen | Signum valorem | Default processus actio | Causa significat |
---|---|---|---|
SIGHUP | 1 | A | Terminus dependet vel potestate processus terminatur |
SIGINT | 2 | A | CtrlTab + CtrlTab + c |
SIGQUIT | 3 | C | Clavis scriptor effugium tincidunt premitur |
SIGILL | 4 | C | Illegalis disciplinam |
SIGTRAP | 5 | C | breakpoint instructions |
SIGABRT | 6 | C | Signum abort ab abort edita (III) |
SIGBUS | 7 | C | bus errorum |
SIGFPE | 8 | C | fluctuetur exceptio |
SIGKILL | 9 | A | -9 occidere processus necat, hoc signum capi non potest et neglecta |
SIGUSR1 | 10 | A | User definitum signum 1 |
SIGSEGV | 11 | C | Aliquam referat memoria (ex terminis ordinata, operatio nulla regula) |
SIGUSR2 | 12 | A | User signum definitum 2 |
SIGPIPE | 13 | A | Scribere data ad fistulam sine processu legere |
SIGALRM | 14 | A | Terror horologii signum, signum a terrore missum () munus |
SIGTERM | 15 | A | Terminatio signum, signum ab defectu |
SIGSTKFLT | 16 | A | BIBLIOTHECA errorum |
SIGCHLD | 17 | B | Emittitur cum puer processus finit |
SIGCONT | 18 | D | Resumere cessaverunt processum |
SIGSTOP | 19 | D | Subsisto processus |
SIGTSTP | 20 | D | Terminatio torcular subsisto clavis |
SIGTTIN | 21 | D | Processus background petitiones terminatio legere |
SIGTTOU | 22 | D | In background processus postulat ut scribere ad terminum |
SIGURGO | 23 | B | Subitis conditio deprehensio (nervum) |
SIGXCPU | 24 | C | CPU terminum exceditur |
SIGXFSZ | 25 | C | File size modus exceditur |
SIGVTALRM | 26 | A | virtualis horologium signum |
SIGPROF | 27 | A | Duis horologium annuit |
SIGWINCH | 28 | B | Fenestra magnitudine mutationes |
SIGPOLL | 29 | B | Polling (Sys V) |
SIGPWR | 30 | A | electricity defectum |
SIGSYS | 31 | C | Illegalis ratio vocationis |
Actio defalta est processus terminare.
Actio defectus B est hoc signum ignorare.
Actio defalta C est processus terminare et imaginem nuclei accipere.
Defalta actio D processu prohibere est, et propositum, quod rem publicam impeditam intrat, exsequi pergere potest.
Tripliciter processuum ad signa tractanda;
signal()
functiones quomodo programma ansas significationibus exponere possunt.
Munus declaratio;
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
Parameter Description:
sig
: Specificare signum capere.func
: Monstratorem signum processus muneris. Munus processus in integro modulo recipiendo indiget, qui numerus signo captus est.SIG_DFL
The : SIG_DFL tortor significat processui default signum methodi.ususSIG_DFL
assignal
Secundus functionis parameter indicat modum processus default systema pro signo adhiberi.SIG_IGN
The : SIG_IGN tortor significat signum ignorare.ususSIG_IGN
assignal
Secundus functionis parameter indicat, cum signum processus accipit, eam negliget nec processui ullo fungi debet. Hoc impedire potest quin processus inopinatus in aliquibus adiunctis terminetur vel interveniat.SIG_ERR
:SIG_ERR
Macros errores indicantes adhibentur.non utsignal
Secundus functionis modulus loco ponitursignal
Reditus valor functionis indicat vocationem incassum.sisignal
Si vocatio ad munus defecerit, reverteturSIG_ERR
.Hoc est typice ad deprehendere et processumsignal
Error munere vocent in qui.Ministerium programmatis in curriculo decurrit. Si vis prohibere, non est bona idea occidere, quia cum processus occiditur, subito perit nec opus reparatum componitur.
Si signum mittes progressioni ad servitium, accepto signo, servitium programma vocat functionem et scribens in functioni codice reparatum, et propositum potest exire modo proposito.
Signum mittendi 0 ad programmata muneris programma deprehendere potest num programmata viva sint.
Linux operating ratio praebet kill
etkillall
Mandatum signum mittit programmatiskill()
Bibliotheca munera aliis processibus annuit.
Munus declaratio;
int kill(pid_t pid, int sig);
kill()
Munus accipit parametrisig
Praefinitum signum transit ad parametripid
certo processu.
modulus pid
Plures sunt condiciones:
pid > 0
Transire signum ad processum utpid
processum.pid = 0
Signum omnibus processibus in eodem processu globi ac currenti transeo. Saepe a parente processum adhibetur ut signa mittat puero processus.pid < -1
Signum processus transiet ad id coetus of *|pid|
omnium processuum.pid = -1
Signum transit omnibus processibus, qui permittitur ut signum mittat, sed non processus qui misit signum.Sunt autem VIII modi processus terminandi, 5 quarum terminationes normales sunt;
main()
Nam munerareturn
remittere;exit()
officium;_exit()
or *_Exit()
officium;return
remittere;pthread_exit()
remittere;Tripliciter enormis terminati sunt;
abort()
munus abort;exist main()
in munere,return
Valor est terminus status redditus, si nonreturn
dicitur vel vocationisexit()
ergo terminus processus status est 0 .
In testa, vide statum processus terminationis;
echo $?
III munera processus Northmanni terminare (exit()
et_Exit()
specificatur ab ISO C,_exit()
specificatur per POSIX):
void exit(int status);
void _exit(int status);
void _Exit(int status);
status
Status processus terminationis.
return
Cum redit munus indicat, destructor loci objecti vocabitur.main()
in munusreturn
Destructor obiecti globalis etiam vocatur.exit()
Processum terminare indicat, destructor loci objecti non vocabitur, nisi destructor obiecti globalis vocabitur._exit()
et_Exit()
Exit directe et nullum opus tersus perficietur.Processus is available atexit()
Munus adnotatione functiones terminat (usque ad 32), haec munera eruntexit()
Automatarie dicta.
int atexit(void (*function)(void));
exit()
Ordo, quo functiones terminationes vocantur, praeposterus ex tempore adnotationes.
system()
Munus praebet methodum simplicem programma exequendi, praeteriens programmata et parametri, quae sicut filo exsecutioni mandanda sunt.system()
Munus iusti.
Munus declaratio;
int system(const char * string);
system()
Valor muneris reditus molestior est.
system()
Munus non- nulla redit;system()
Munus redit 0;system()
Munus non-nulla redit.exec
Munus familiae alium modum praebent ut programmata (binarii vel scripta testa) vocant intra processum.
exec
Officium familiae declaratur sic:
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[], char *const envp[]);
Notice:
errno
medium.exec
Deinde, programma vocatum locum vocationis restituet, id est,exec
Nullus post munus codice exsecutus erit.execl()
etexecv()
alii raro utuntur.Omnes processus in tota Linux systemate in structura arboris sunt.
ususpstree
Potes videre processum arboris cum imperio;
pstree -p 进程编号
Quisque processus unicum processum habet ID per integrum non negativum repraesentatum. Etsi unicum, processus IDs reddi potest. Cum processus terminatur, eius processus ID candidatus reuse fit. Linux algorithm tardae reuse utitur ita ut ID processus novi creati differat ab ID, quod nuper terminatum est. Hoc impedit quominus novos processus fallat per processum terminatum eodem ID utens.
Munus ad processum ID:
pid_t getpid(void); // 获取当前进程的ID。
pid_t getppid(void); // 获取父进程的ID。
Processus existens potest vocarefork()
Munus novum processum creat.
Munus declaratio;
pid_t fork(void);
Dependetfork()
Novus processus creatus appellatur processus infantis.
fork()
Munus dicitur semel, sed bis redit. Discrimen inter duos reditus est quod processus reditus valorem prolis 0 est, cum valor reditus parentis processum est processus ID processus pueri novi creati.
Puer processum et processus parens exequi pergitfork()
In codice deinde; Puer processus exemplar est processus parentis. Puer processum habet exemplar processus notitiae parentis spatium, cumulum et acervum (nota: processus exemplar habet, cum processu parentis non communicatur).
fork()
Post haec exsecutio processus ordinis parentis et pueri est indeterminata.
fork()
has petitiones processus pertractet, dum processum parentis expectare pergit ad petitionem proximam nexum.fork()
Vocavit statim post reditusexec
。fork()
Unum pluma est quod descriptores fasciculi in processu parentis aperti erunt et ad processum infantis transcribendum, et processum parentis et processus pueri eiusdem imaginis identidem communicant.
Si processus parens et filius processum scribant ad limam ab eodem descripto sine ulla synchronisationis forma demonstratam, eorum output inter se misceri potest.
Hic videre potes tantum 100,000 ordines datarum esse.
200,000 ordines notitiarum hoc tempore esse debet. Unus ordo minor est quia operatio tabellae scribentis non est atomica. the scribe to fail.
vfork()
Munus vocat et reditus valores idem suntfork()
Eadem, sed alia semantica eorum.
vfork()
Munus adhibetur ad creare novum processum cuius finis estexec
Novum propositum, quod spatium electronicae processus parentis non effingo, quia processus pueri statim vocatexec
sic oratio spatium parentis processu non adhibebitur. Si puer processum inscriptionis spatio processus parentis adhibet, eventus ignotus accidere potest.
vfork()
etfork()
Alia differentia est:vfork()
Curare ut processus pueri primo decurrat et eum in processu infantis appelletexec
or *exit
Tum processus parentis operationem repetit.
In systemate operante, processus zombie ad puerum processum terminatum refertur, sed processum parentis suum nondum legit statum exitum suum. Etsi processus zombie iam non est cursus, tamen ingressum in mensa processus occupat ita ut nucleus notitiae status processus exitus servare possit (sicut processus ID, status exitus, etc.) donec processus parentis haec informationes legit.
Si processus parentis ante processum pueri exit, processus puer erit per processum 1 (haec quoque via est ut processus in curriculo percurrat).
Si filius processum exit ante processum parentis, et processum parentis non procedit processus pueri exitus informationis, tunc processus erit processus zombie.
nucleus structuram datam retinet pro quolibet infante processu, incluso numero processuum, status terminationis, CPU temporis adhibito, etc. Si processus parentis processus notitia exitus pueri processit, nucleus hanc structuram notitiarum solvet. Si processus parens non processum notitiae processus pueri exit, nucleus hanc structuram datam non dimittit, et processus numeri processus pueri semper occupabitur. Processus numeri praesto in systemate limitantur. Si numerus processus zombie generatur, ratio non poterit novos processus generare quia numeri processus praesto non sunt.
signal(SIGCHLD, SIG_IGN)
nucleum certiorem facere non interest in processu infantis exitus, et eius structurae notitia statim post exitum pueri solvetur.wait()
/waitpid()
officium: Processus parentis expectat processum infantis ad finem vocando has functiones et obtinet statum suum exitus, sic solvens facultates a puero processum occupatas.pid_t wait(int *stat_loc);
pid_t waitpid(pid_t pid, int *stat_loc, int options);
pid_t wait3(int *status, int options, struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);
Valor reditus numerus processus pueri est.
stat_loc
Estne notitia de terminatione pueri processus;
a) Si Northmanni terminabitur, tortor WIFEXITED(stat_loc)
Vera redde, tortorWEXITSTATUS(stat_loc)
Terminatio status obtineri potest;
b) Si enormis terminatur, macro WTERMSIG(stat_loc)
Signum accipit ut processus terminetur.
Si parens processus occupatus est, capere potes SIGCHLD
Signum, vocatur in signo processus functioniswait()
/waitpid()
。
[Mitte annuit inter processuum] (## 1.5 annuit mitte)
In multi-processus muneris programma, si signum exitus sub-processus acceperit, processus sub-sua exibit.
Si processus parentis signum exitus acceperit, signum ad omnes processuum infantis exitus mittere debet ac deinde ipsum exire.
Multi- stamina intra spatium processus inscriptionis communicant;Si plures filis ad eandem memoriam accedere necesse est, modo variabilium globalium utere.。
In multiplicibus processibus electronica cuiusque processus spatium sui iuris est et non communicatum.Si plures processus necesse est eandem memoriam accedere, variabiles globales non possunt, solum memoria communis adhiberi potest.。
Memoria communicata plures processus permittit (nec sanguinis necessitudines inter processuum requiritur) ut eiusdem memoriae spatium accedere. Processus memoriam communem cum spatio suo electronico coniungere possunt.
Communes memoria mechanismum seram non praebet, hoc est, cum processus memoriae communicatus legit/scribit, non impedit alios processus quin eam legere/scribat.Si legere velis claude / scribe memoriae communis, uti potes semaphoro . Linux copiam functionum praebet ad memoriam participandam operandam.
Munus hoc adhibetur ad memoriam participandam creare/acquirere.
int shmget(key_t key, size_t size, int shmflg);
typedef unsigned int key_t
) fere in hexadecimali, e.g 0x5005
, claves diversorum memoriarum communium idem esse non possunt.0666|IPC_CREAT
Indicat, si memoria communis non est, creare.usus ipcs -m
Inspicere potes rationem memoriae communis, inter quas: clavis (clavis), memoria communis id (shmid), dominus (dominus), permissiones (perms), et amplitudo (bytes).
usus ipcrm -m 共享内存id
Communis memoria manually sic deleri potest:
Nota: Vasa notata genera in communi memoria adhiberi non possunt, tantum notitiarum fundamentalium typi adhiberi possunt.
Munus hoc communes memoriae cum inscriptione spatium currentis processus coniungere solebat.
void *shmat(int shmid, const void *shmaddr, int shmflg);
shmget()
Communis memoria identifier munus reddidit.Initium redit oratio communis memoriae cum vocationi succedit, redit cum deficit. (void *)-1
。
Munus hoc adhibitum est ad memoriam communitatis abtrahendam ex processu currenti, qui aequivalet isti shmat()
Operatio inversa functionis.
int shmdt(const void *shmaddr);
shmat()
Redit oratio munere.Redit 0 si vocationem succedit et -1 si defecerit.
Hoc munus memoria communi operabatur.
int shmctl(int shmid, int command, struct shmid_ds *buf);
shmget()
Communis memoria id munus reddidit.IPC_RMID
。Redit 0 si vocationem succedit et -1 si defecerit.
Nota, utere root
Memoria communis creata non potest deleri ab usoribus ordinariis quarumcumque licentiarum factarum.
Redit 0 si vocationem succedit et -1 si defecerit.
Hoc munus memoria communi operabatur.
int shmctl(int shmid, int command, struct shmid_ds *buf);
shmget()
Communis memoria id munus reddidit.IPC_RMID
。Redit 0 si vocationem succedit et -1 si defecerit.
Nota, utere root
Memoria communis creata non potest deleri ab usoribus ordinariis quarumcumque licentiarum factarum.
[Imagines externae imagines transferuntur...(img-v6qW3XRA-1720711279572)]
[Imagines externae imagines transferuntur...(img-CG0tGAne-1720711279572)]