, , .
.
IPC:
- ;
- ( );
- .
IPC:
- ;
- (pipe);
- (FIFO) ;
- (messages queue);
- (shared memory) ;
- ;
- .
(pipe)
, ().
: int pipe(int *filedes);
filedes[0] ;
filedes[1] ;
, 2 , .
=> pipes . .
. , ( , .. ). -> .
FIFO
(pipe) , -> c ( FIFO). .
: mknode(char *pathname, int mode, int dev);
*pathname FIFO;
mode ;
:
1) n N (n<N) n , ;
2) n N (n<N) (n>N) N ;
3) , 0 , , , 1 ;
4) , ( + tag);
5) , FIFO , , .
FIFO .
FIFO SIGPIPE, .
FIFO - .
:
- FIFO (mknode());
- FIFO (open());
- (recv());
- (print());
- FIFO (close()).
:
|
|
- FIFO (open());
- FIFO (send());
- FIFO (close()).
- FIFO (rm()).
IPC, , , . . ftok() (: ).
#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok(char *filename, char proj);
filename ,
IPC .
ID. ID.
IPC | |||
pipe | - | pipe(); | |
FIFO | mknode(); | ||
msgget(), msgctl() | |||
semctl(), semset() | |||
shmget(), shmctl() |
-1.
.
Inode , .
, , , , . .
.
:
- (/);
- (, = 0);
- ( ).
. .
msgid_ds ----------------------------------------à ipc_perm
msg_perm // permission
msg_cbytes //
msg_num //
msg_first //
msg_last //
:
msg_snd() ;
msg_rcv() ;
msg_get() ;
msg_ctl() .
( / ).
:
- ( );
- (), .
. . UNIX .
sem_id_ds:
sem_id ;
sem_perm ;
sem_first ;
sem_num ;
sem_oper - ;
sem_time .
sem , , , , , , , .
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflag);
|
|
. .
sem_op , .
sem_op(int semid, struct sembuf *semop, size_t nops);
semid ;
semop , - 3 : , , .
struct sembuf{
short sem_num;
short sem_op;
short sem_flag;}
nops , 3:
- semop > 0 , sembuf.
- semop = 0, , ;
- semop < 0, , sem_op .
, UNIX.
.
, , . , .
:
- ;
- ;
- .
:
- ;
- ;
- .
- 2 .
, , . . . . IPC. , . . . 32.
SIGINT del, Ctrl+C .. . .
#include <sys/types.h>
#include <signal.h>
int kill (pid_t pid, int sig);
:
1) ;
2) ( 0, ). .
3) (SIGALARM, , );
4) ;
5) ( , , );
6) ;
7) .
. , . .
:
- ;
- ;
- ;
- ;
- , .
:
1) ;
2) ;
3) ;
4) , ;
5) ( SIGKILL, SIGSTOP).
6) , .
: .
|
|
.
:
;
.
.
, , , , , ( - ), .
.
, .
. . ( ).
.
, . . . , .
.
. ISSIG().
:
- ;
- ;
- .
, . ISSIG() , , . .