Linuxプロセス間通信は、コードが簡単で、一目でわかります.
4389 ワード
1、無名パイプ
キー関数
コード#コード#
2、有名なパイプ(FIFO)
キー関数
コード#コード#
キー関数
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;
}