Сам процесс форка linux без форка, vfork, clone, sys_call или семейства функций exec - PullRequest
0 голосов
/ 27 сентября 2019

Я удаляю все функции 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 был запущен, проблема все еще сохраняется.

Можете ли вы помочь мне?Второй процесс запущен ядром?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...