.


:




:

































 

 

 

 


UNIX




  Proc u-area    

C 2 :

1. - fork()

2. exec() - , .

pid_f fork(void) - .

:

,

,

fork() .

:

- PID, PPID

-

- , fork() . - 0, PID

- u-area

- /

.

, . fork():

1. swap

2. /proc PID -

3. proc

4. .

5. u-area .

6. , , .

7. , .

8. "0" fork() - ( PID - )

9. .

UNIX -

main ()

{

int pid;

pid = fork();

if (pid == -1)

{

perror (fork);

exit();

}

if (pid == 0)

{

// , . , fork()

}

else

{

// , .

}

printf (something\n); // , ,

return 0;

}

 

Kill Sig-number Pid (Sig-number . . )

Kill$! , .

Proc& - .

exec()

2 :

1.

2.

 

int execve(path,argv,envp)
int execv(const char *path,const char *argv)
int execvp(file,argv)
int execle(path,arg0,...,argN,0,envp)
int execl(file,arg0,...,argN,0)
int execl(path,arg0,...,argN,0)
exec()
UNIX

#include <unistd.h>

 

execve().

: PID, PPID , (EUID, EGID) SUID, , , , , .

exec():

1. () (file)

2. (args)

3. (envp)

, fork().( UNIX).

int

, -1 .

 

wait(&status) -

waitid(id_type, id)

waitpid(id_group process_all) . ID . process_all.

stat_log. Ÿ .


exec():

exec()
. ?
1- #!shellname ( ) Shell Name
SUID(SGID)?
EUID (EGID) UID (GID)  
exec(),
swap , ,
. swap
+
?
. 0  
, ( )
. IP
2 3
+ (XPGH)


 





:


: 2016-11-02; !; : 381 |


:

:

- , , .
==> ...

1585 - | 1387 -


© 2015-2024 lektsii.org - -

: 0.016 .