什么是父进程和子进程
父进程
在计算机领域,父进程(英语:Parent Process)指已创建一个或多个子进程的进程。
UNIX
在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。
操作系统内核以进程标识符(Process Identifier,即PID)来识别进程。进程0是系统引导时创建的一个特殊进程,在其调用fork创建出一个子进程(即PID=1的进程1,又称init)后,进程0就转为交换进程(有时也被称为空闲进程),而进程1(init进程)就是系统里其他所有进程的祖先。
僵尸进程与孤儿进程
当一个子进程结束运行(一般是调用exit、运行时发生致命错误或收到终止信号所导致)时,子进程的退出状态(返回值)会回报给操作系统,系统则以SIGCHLD信号将子进程被结束的事件告知父进程,此时子进程的进程控制块(PCB)仍驻留在内存中。一般来说,收到SIGCHLD后,父进程会使用wait系统调用以获取子进程的退出状态,然后内核就可以从内存中释放已结束的子进程的PCB;而如若父进程没有这么做的话,子进程的PCB就会一直驻留在内存中,也即成为僵尸进程。
孤儿进程则是指父进程结束后仍在运行的子进程。在类UNIX系统中,孤儿进程一般会被init进程所“收养”,成为init的子进程。
为避免产生僵尸进程,实际应用中一般采取的方式是:
将父进程中对SIGCHLD信号的处理函数设为SIG_IGN(忽略信号);
fork两次并杀死一级子进程,令二级子进程成为孤儿进程而被init所“收养”、清理。
Linux
在Linux内核中,进程和POSIX线程有着相当微小的区别,父进程的定义也与UNIX不尽相同。Linux有两种父进程,分别称为(形式)父进程与实际父进程,对于一个子进程来说,其父进程是在子进程结束时收取SIGCHLD信号的进程,而实际父进程则是在多线程环境里实际创建该子进程的进程。对于普通进程来说,父进程与实际父进程是同一个进程,但对于一个以进程形式存在的POSIX线程,父进程和实际父进程可能是不一样的。
子进程
在计算机领域中,子进程为由另外一个进程(对应称之为父进程)所创建的进程。子进程继承了父进程的大部分属性,例如文件描述符。
产生
在Unix中,子进程通常为系统调用fork
的产物。在此情况下,子进程一开始就是父进程的副本,而在这之后,根据具体需要,子进程可以借助exec调用来链式加载另一程序。
与父进程的关系
一个进程可能下属多个子进程,但最多只能有1个父进程,而若某一进程没有父进程,则可知该进程很可能由内核直接生成。在Unix与类Unix系统中,进程ID为1的进程(即init进程)是在系统引导阶段由内核直接创建的,且不会在系统运行过程中终止执行(可参见Linux启动流程);而对于其他无父进程的进程,则可能是为在用户空间完成各种后台任务而执行的。
当某一子进程结束、中断或恢复执行时,内核会发送SIGCHLD信号予其父进程。在默认情况下,父进程会以SIG_IGN函数忽略之。
“孤儿进程”与“僵尸进程”
在对应的父进程结束执行后,进程就会变成孤儿进程,但之后会立即由init进程“收养”为其子进程。
某一子进程终止执行后,若其父进程未提前调用wait
,则内核会持续保留子进程的退出状态等信息,以使父进程可以wait
获取之。而因为在这种情况下,子进程虽已终止,但仍在消耗系统资源,所以其亦称僵尸进程。wait常于SIGCHLD信号的处理函数中调用。
解决与预防
在POSIX.1-2001标准规定中,父进程可将SIGCHLD的处理函数设为SIG_IGN(亦为默认设定),或为SIGCHLD设定SA_NOCLDWAIT标记,以使内核可以自动回收已终止的子进程的资源。自Linux 2.6与FreeBSD 5.0起,两种内核皆支持了这两种方式。但是,在忽略SIGCHLD信号的问题上,由于System V与BSD由来已久的差异,若要回收派生出的子进程的资源,调用wait
仍是最便捷的方式。
Atas ialah kandungan terperinci 什么是父进程和子进程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah proses explorer.exe? Apabila kita menggunakan sistem pengendalian Windows, kita sering mendengar istilah "explorer.exe". Jadi, adakah anda ingin tahu apakah proses ini? Dalam artikel ini, kami akan menerangkan secara terperinci apakah proses explorer.exe dan fungsi serta kesannya. Pertama sekali, explorer.exe ialah proses utama sistem pengendalian Windows Ia bertanggungjawab untuk mengurus dan mengawal Windows Explorer (Window

"com pengganti" ialah proses "C:\Windows\System32\dllhost.exe"; bertindak balas secara langsung. Ini kerana komputer sedang memuatkan ikon fail Kadangkala masalah berlaku, menyebabkan komputer tersekat Anda boleh menyelesaikan masalah tersekat dalam tetapan sifat komputer.

ccsvchst.exe ialah fail proses biasa yang merupakan sebahagian daripada perisian Symantec Endpoint Protection (SEP), dan SEP ialah penyelesaian perlindungan titik akhir yang dibangunkan oleh syarikat keselamatan rangkaian terkenal Symantec. Sebagai sebahagian daripada perisian, ccsvchst.exe bertanggungjawab untuk mengurus dan memantau proses berkaitan SEP. Pertama, mari kita lihat SymantecEndpointProtection(

Dalam sistem Linux, proses zombi adalah proses khas yang telah ditamatkan tetapi masih kekal dalam sistem. Walaupun proses zombi tidak menggunakan banyak sumber, jika terlalu banyak, ia boleh menyebabkan kehabisan sumber sistem. Artikel ini akan memperkenalkan cara mengalih keluar proses zombi dengan betul untuk memastikan operasi normal sistem. Proses zombi 1Linux Selepas proses anak menyelesaikan tugasnya, jika proses induk tidak menyemak status dalam masa, proses anak akan menjadi proses zombi. Proses anak sedang menunggu pengesahan daripada proses induk, dan sistem tidak akan mengitar semulanya sehingga ia selesai. Jika tidak, proses zombi akan terus tergantung dalam sistem. Untuk menyemak sama ada terdapat proses zombi dalam sistem, anda boleh menjalankan arahan atas untuk melihat semua proses yang sedang berjalan dan kemungkinan proses zombi. Hasil daripada arahan 'atas' boleh dilihat dari rajah di atas dalam Linux.

Penjelasan terperinci tentang kaedah pelarasan keutamaan proses Linux Dalam sistem Linux, keutamaan proses menentukan susunan pelaksanaannya dan peruntukan sumber dalam sistem. Melaraskan keutamaan proses secara munasabah boleh meningkatkan prestasi dan kecekapan sistem. Artikel ini akan memperkenalkan secara terperinci cara melaraskan keutamaan proses dalam Linux dan memberikan contoh kod khusus. 1. Gambaran keseluruhan keutamaan proses Dalam sistem Linux, setiap proses mempunyai keutamaan yang berkaitan dengannya. Julat keutamaan biasanya -20 hingga 19, di mana -20 mewakili keutamaan tertinggi dan 19 mewakili

Cara Menjeda Kemas Kini Proses Pengurus Tugas dalam Windows 11 dan Windows 10 Tekan CTRL+Kekunci Tetingkap+Padam untuk membuka Pengurus Tugas. Secara lalai, Pengurus Tugas akan membuka tetingkap Proses. Seperti yang anda lihat di sini, semua apl bergerak tanpa henti dan sukar untuk menunjukkannya apabila anda ingin memilihnya. Jadi, tekan CTRL dan tahan, ini akan menjeda pengurus tugas. Anda masih boleh memilih aplikasi dan juga tatal ke bawah, tetapi anda mesti menahan butang CTRL pada setiap masa.

Mengapa proses dalam Linux tidur? Dalam sistem pengendalian Linux, sesuatu proses boleh menjadi tidak aktif disebabkan oleh beberapa sebab dan keadaan yang berbeza. Apabila sesuatu proses berada dalam keadaan tidak aktif, ini bermakna proses itu digantung buat sementara waktu dan tidak boleh meneruskan pelaksanaan sehingga syarat-syarat tertentu dipenuhi sebelum ia boleh dibangkitkan untuk meneruskan pelaksanaan. Seterusnya, kami akan memperkenalkan secara terperinci beberapa situasi biasa apabila proses memasuki hibernasi dalam Linux, dan menggambarkannya dengan contoh kod tertentu. Menunggu I/O selesai: Apabila proses memulakan operasi I/O (seperti membaca

"Kaedah pengesanan tiada proses PHP dalam sistem Linux, contoh kod khusus diperlukan" Apabila menggunakan sistem Linux untuk pembangunan web, kami sering bergantung pada proses PHP untuk mengendalikan halaman dinamik dan logik, dan kadangkala kami mungkin perlu memantau sama ada terdapat PHP proses pada pelayan. Artikel ini akan memperkenalkan kaedah untuk mengesan sama ada terdapat proses PHP dalam sistem Linux dan memberikan contoh kod tertentu. Mengapakah proses PHP perlu dikesan dalam pembangunan web, proses PHP memainkan peranan penting untuk menghurai dan melaksanakan proses PHP.
