Linuxプロセス間通信は、コードが簡単で、一目でわかります.

4389 ワード

1、無名パイプ
キー関数
pipe();
write();
read();
close();

コード#コード#
#include
#include
int main(void) {
    int fd[2];//    
    pipe(fd);//    ,    -1
    pid_t pid = fork();//      pid,     0,    -1
    if (pid == 0) {
        //    
        close(fd[1]);//        
        char line[100];//     
        int n = read(fd[0], line, 100);//   ,  IO  ,      
        printf("%d %s
"
,n, line); } else { // close(fd[0]);// write(fd[1], "Hello!", 6);// , -1 } getchar(); return 0; }

2、有名なパイプ(FIFO)
キー関数
mkfifo();
open();
write();
read();
close();

コード#コード#
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define FD "/tmp/fifo" //          

int main(void) {
    unlink(FD);//     fifo,            
    if(mkfifo(FD, 0777)==-1)//  FIFO,0777     linux  ,    -1
    { }
    pid_t pid = fork();
    if (pid == 0) {
        //    
        int readfd = open(FD, O_RDONLY);//   FIFO
        char line[100];//     
        int n = read(readfd, line, 100);//   
        printf("%d %s
"
, n, line); close(readfd); } else { // int writefd = open(FD, O_WRONLY);// FIFO sleep(1); write(writefd, "Hello?", 6);// close(writefd); } getchar(); return 0; }