Я удаляю все функции fork, vfork и т. Д. В процессе, а также удаляю все места, где код запускает процесс, но я также вижу, что процесс запустится сам, когда я запущу процесс с достаточным количеством времени.
Я запускаю процесс на платформе Linux.Я также добавляю проверку в основной код, когда процесс запускается каким-либо органом.Если система выполняла процесс, новый процесс больше не будет запущен.Но, как уже упоминалось выше, процесс также запускает себя успешно!
Когда процесс запущен, код запишет файл с pid процесса в каталог / tmp.В основном коде, если новый процесс запустится, проверит, существует ли файл.Если файл был создан, основной код будет немедленно завершен.
tc login: root
Password:
# ps | grep mprocess
4677 telecoma 19104 S /usr/sbin/myprocess
25307 telecoma 660 S grep myprocess
28855 telecoma 2904 R /usr/sbin/myprocess
# cat /proc/28855/status
Name: myprocess
State: R (running)
Tgid: 28855
Ngid: 0
Pid: 28855
PPid: 4677
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups:
VmPeak: 52172 kB
VmSize: 52172 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 2904 kB
VmRSS: 2904 kB
VmData: 42648 kB
VmStk: 136 kB
VmExe: 1592 kB
VmLib: 5196 kB
VmPTE: 44 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/1671
SigPnd: 00000000000000000000000000000000
ShdPnd: 00000000000000000000000000000000
SigBlk: 00000000000000000000000000085003
SigIgn: 00000000000000000000000000001004
SigCgt: 000000000000000000000001c013e003
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
Cpus_allowed: 8
Cpus_allowed_list: 3
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 0
nonvoluntary_ctxt_switches: 3923318
Из сообщений вы увидите два процесса, называемых myprocess.И когда я определяю второй статус процесса, вы увидите, что ppid - это первый pid процесса.И я также удаляю приложение myprocess, когда myprocess был запущен, проблема все еще сохраняется.
Можете ли вы помочь мне?Второй процесс запущен ядром?