導航:首頁 > 操作系統 > linux創建管道

linux創建管道

發布時間:2022-05-21 16:24:08

1. 命名管道的linux實例

此示例代碼意在體現出命名管道與普通管道的區別,命名管道是以一個普通文件的形式出現的,包括三個文件操作:創建命名管道、寫管道、讀管道。
1. 創建命名管道
#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>intmain(void){charbuf[80];intfd;unlink(zieckey_fifo);mkfifo(zieckey_fifo,0777);}寫命名管道代碼 #include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>intmain(void){intfd;chars[]=Hello! ;fd=open(zieckey_fifo,O_WRONLY);while(1){write(fd,s,sizeof(s));sleep(1);}return0;}讀命名管道代碼 #include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<fcntl.h>intmain(void){intfd;charbuf[80];fd=open(zieckey_fifo,O_RDONLY);while(1){read(fd,buf,sizeof(buf));printf(%s ,buf);sleep(1);}return0;}

2. 系統linux 下的 管道 和 重定向 這兩個概念怎麼理解

管道是一個先進先出的特殊文件,一方只能依次寫進去,另一方也只能依次讀出來
理解管道符前先要知道一個進程運行後有3個最基本的文件,標准輸入(0表示),標准輸出(1表示),錯誤輸出(2表示)
通過命令查看當前3個基本文件,ls-l/proc/$$/fd/
shell中的管道符做了3件事,
1,先創建一個管道文件pipe
2,將管道符前面的一個命令的標准輸出替換為pipe
2,將管道符後面的一個命令的標准輸入替換為pipe
例子
echotest>/tmp/test
tail-f/tmp/test|cat&
查看tail命令3個基本文件
ls-l/proc/`pidoftail`/fd
查看cat命令3個基本文件
ls-l/proc/`pidofcat`/fd
shell重定向本身從編程角度理解就是賦值語句,0,1,2本身理解為3個變數,
<和>表示賦值符號,變數名只能用數字表示,變數只能在/proc/進程pid/fd/下查看
<以只讀方式打開一個文件,然後把打開的文件賦值給變數
>以只寫方式打開一個文件,然後把打開的文件賦值給變數
<>以讀寫方式打開一個文件,然後把打開的文件賦值給變數
exec1<>/tmp/info表示讀寫打開/tmp/info,然後賦值給變數1,執行後其他命令列印的信息都會輸入到/tmp/info里,默認所有的列印信息(echoaaaaaa)都會獲取變數1裡面打開的文件,然後把要列印的信息寫到這個文件裡面
如果寫成exec1</tmp/info這種方式,那麼列印的信息就沒法寫進去了,因為是只讀方式打開的
ls-l/dev/fd/或者ls-l/proc/$$/fd/查看
cat/proc/cmdline>/tmp/cmd通常啥這種寫法,賦值符號前面沒寫具體的變數名,默認就是1,也就是cat/proc/cmdline1>/tmp/cmd
echor>/tmp/r&&exec6</tmp/r
lsof|grep/tmp/r可以查看到6r屬性,文件以讀方式開打,並且復制給變數6

3. linux下為什麼創建管道成功,打開管道卻失敗呢

代碼貼出來看看呢?
打開管道失敗,一般要注意打開的方式,一般不能以讀寫方式打開,要麼只讀打開,要麼只寫打開,否則會出錯。
如果以O_NONBLOCK 非阻塞方式打開的話,管道的另一端也要同時要打開。

4. Linux C: 1、啟動A進程,創建一有名管道,並向其寫入一些數據 2、啟動B進程,從A創建的有名管道中讀出數據

01 #include<stdio.h>
02 #include<unistd.h>
03
04 int main()
05 {
06 int n,fd[2]; // 這里的 fd 是文件描述符的數組,用於創建管道做准備的
07 pid_t pid;
08 char line[100];
09 if(pipe(fd)<0) // 創建管道
10 printf("pipe create error\n");
11
12 if((pid=fork())<0) //利用 fork()創建新進程
13 printf("fork error\n");
14
15 else if(pid>0){ //這里是父進程,先關閉管道的讀出端,然後在管道的寫端寫入「hello world"
16 close(fd[0]);
17 write(fd[1],"hello word\n",11);
18 }
19 else{
20 close(fd[1]); //這里是子進程,先關閉管道的寫入端,然後在管道的讀出端讀出數據
21 n= read(fd[0],line,100);
22 write(STDOUT_FILENO,line,n);
23 }
24 exit(0);
25 }

5. linux shell腳本怎麼創建命名管道

man mkfifo

Create named pipes (FIFOs) with the given NAMEs.

6. 在Linux里,所有命令都可用於構造管道嗎

管道舉例:ls -a | grep mysql 說明:就是把前一個命令的結果當成後一個命令的輸入。結合本例就是先顯示所有的文件,然後再用grep命令在ls的結果中查找包含mysql的文件。

7. 編寫一個linux的管道程序

對此程序有問題,可以 hi我。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
int pid1, pid2;
int pfd[2];

pipe(pfd);

pid1 = fork();
if (pid1 == 0)
{
char * argv[] = {
"echo",
"good morning",
NULL
};
/* left child */
close(pfd[0]);
close(1); /* close stdout */
p(pfd[1]); /* redirect stdout to pipe */
close(pfd[1]);
execvp("echo", argv);
exit(1);
}

pid2 = fork();
if (pid2 == 0)
{
char *argv[] = {
"sed",
"s/good/hi/g",
NULL
};

/* right child */
close(pfd[1]);
close(0); /* close stdin */
p(pfd[0]); /* redirect stdin to pipe */
close(pfd[0]);
execvp("sed", argv);
exit(1);
}

close(pfd[0]);
close(pfd[1]);
wait(NULL);
wait(NULL);
printf("Both children exited.\n");
return 0;
}

8. Linux系統中mkfifo創建管道後,調用open打開失敗,不知道錯在哪兒

  1. 創建 fifo 時,寫 0777 (8進制的 777)

  2. 你用了 nonblock 方式去打開fifo的寫端,此時fifo的讀端沒有人open,所以一定會返回失敗。必須先有人以讀的方式打開fifo後,才能以nonblock方式打開寫。或者去掉 O_NONBLOCK 參數。

9. 如何才能在linux下建立全雙工管道

只要理解了什麼是管道,就很簡單了 管道「| 」就是將前面命令輸出作為管道後面命令的輸入 如: ls -a | grep test | awk "{print $1}" 就是將ls -a 顯示的結果,在帥選出含有test,然後列印出第一列。

10. linux中管道是指什麼,重定向是指什麼

管道是把一個命令的輸出作為下一個命令的輸入,
如 ls /etc | more
cat /etc/passwd | grep root
重定向是把一個命令的輸出重定向到另一個文件
如 echo 'hello' > abc.txt 一個大於號是抹除源文件內容並寫入,如果沒有這個文件就創建這個文件並寫入
echo 'hello world' >> /var/log/messages 兩個大於號是追加內容到這個文件,沒有這個文件就創建並寫入
cat /etc/sysconfig/network-scripts/ifc-eth0 >>abcd.txt

break 2>/dev/null

閱讀全文

與linux創建管道相關的資料

熱點內容
雲伺服器建設原理 瀏覽:256
javajunit4for 瀏覽:843
華為伺服器如何進陣列卡配置 瀏覽:433
apache伺服器ip地址訪問 瀏覽:718
如何買到安卓手機預裝軟體 瀏覽:537
冤罪百度雲不要壓縮 瀏覽:85
蘇州雲存儲伺服器 瀏覽:173
解壓收納原聲 瀏覽:384
java注冊驗證 瀏覽:375
火花app怎麼上推薦 瀏覽:980
什麼app能游戲投屏到電視上 瀏覽:455
伺服器託管到雲端是什麼意思 瀏覽:835
app保存草稿怎麼用 瀏覽:808
安卓如何進入proumb 瀏覽:144
主機虛擬雲伺服器 瀏覽:619
刪除分區加密的空間會不會恢復 瀏覽:706
京東app客戶上門怎麼看搜索量 瀏覽:741
怎麼在農行app購買黃金 瀏覽:46
c型開發板和單片機 瀏覽:146
虛擬機建立用戶的模板文件夾 瀏覽:904