ในบทความนี้ เราจะสร้าง โปรแกรม C สำหรับ pipe ใน Linux โปรแกรมนี้จะอ่านข้อความจากสตรีมอินพุต และพิมพ์ผลลัพธ์ออกหน้าจอ
ก่อนอื่น เรามาทำความเข้าใจพื้นฐานของ pipe ใน Linux กันก่อน
Pipe ใช้สำหรับถ่ายโอนข้อมูล สามารถนำไปใช้สื่อสารระหว่างกระบวนการ (process) คำสั่ง (command) หรือโปรแกรม เพื่อถ่ายโอนเอาต์พุตมาตรฐานระหว่างสองโปรแกรมในระบบ Linux หรือ Unix
จุดสำคัญคือ pipe เป็นแบบยูนิไดเรกชันนัล (unidirectional) หมายถึง ข้อมูลไหลได้เพียงทางเดียว คือจากซ้ายไปขวา หรือขวาไปซ้ายในโปรแกรม
ที่นี่เราจะสร้าง pipe ที่อ่านอินพุตจากผู้ใช้ และพิมพ์ผลลัพธ์ออกหน้าจอ การทำงานใช้ array ขนาด 2 ซึ่งใช้รับอินพุตที่ arr[0] และส่งเอาต์พุตที่ arr[1]
ตัวอย่างโค้ด
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
int Pipe[2];
char string[100];
if (pipe(Pipe) == -1) {
perror("Failed to create pipe");
exit(1);
}
scanf("%s", string);
write(Pipe[1], string, strlen(string) + 1);
printf("\n");
read(Pipe[0], string, 5);
printf("%s", string);
return 0;
}
ผลลัพธ์
input: TutorialsPoint TutorialsPoint