- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
void init(void)
{
int i,j;
setup();
if (!fork())
_exit(execve("/bin/update",NULL,NULL));
(void) open("/dev/tty0",O_RDWR,0);
(void) dup(0);
(void) dup(0);
printf("%d buffers = %d bytes buffer space\n\r",NR_BUFFERS,
NR_BUFFERS*BLOCK_SIZE);
printf(" Ok.\n\r");
if ((i=fork())<0)
printf("Fork failed in init\r\n");
else if (!i) {
close(0);close(1);close(2);
setsid();
(void) open("/dev/tty0",O_RDWR,0);
(void) dup(0);
(void) dup(0);
_exit(execve("/bin/sh",argv,envp));
}
j=wait(&i);
printf("child %d died with code %04x\n",j,i);
sync();
_exit(0); /* NOTE! _exit, not exit() */
}
Dummy00001 03.06.2010 20:35 # 0
только как-то видеть на конце exec("/bin/sh") ... не очень привычно.
и вызов _exit() выдает что там где-то С++ порылся - либо в коде либо в мозгах.
Dummy00001 03.06.2010 20:36 # 0
guest 03.06.2010 21:01 # 0
del 04.06.2010 08:22 # +1
Dummy00001 04.06.2010 09:34 # 0
а вот статические С++ объекты которые автоматом добавляют вызов деструкторов в atexit() коркают такие говнокоды с легкостью.
guest 04.06.2010 04:48 # 0
avaaron 04.06.2010 12:24 # −2
Линус это писал для kernel 0.01. В 1991г.