亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2417 | 回復(fù): 5
打印 上一主題 下一主題

如何讓程序接收stdout管道的內(nèi)容? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-07-15 13:33 |只看該作者 |倒序?yàn)g覽
例如 ls -al | program. 在程序內(nèi)部對(duì)管道進(jìn)行處理.
各位大哥,給個(gè)例子睢睢

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2005-07-15 14:37 |只看該作者

如何讓程序接收stdout管道的內(nèi)容?

自己改一下,看看是父進(jìn)程關(guān)閉stdin還是什么的.
下面的程序是打開一個(gè)輸入文件讀入后,通過管道寫入sort程序的標(biāo)準(zhǔn)輸入流,進(jìn)行排序.
相當(dāng)于shell代碼 cat <filename>; | sort,也就是匿名管道的應(yīng)用方法.
自己試著改一下吧.

  1. //將父進(jìn)程讀入的文件通過管道寫入到子進(jìn)程的標(biāo)準(zhǔn)輸入。
  2. // 創(chuàng)建了一個(gè)管道,并在子進(jìn)程中調(diào)用execl執(zhí)行了系統(tǒng)的排序程序sort
  3. //

  4. #include <stdio.h>;
  5. #include <unistd.h>;

  6. int main(int argc, char* argv[])
  7. {
  8.    FILE* names;   //輸入文件
  9.    FILE* sort;      //連接到sort的輸出文件
  10.    int fd[2];      //管道的文件描述符
  11.    int ch;

  12.    if (argc != 2)
  13.    {
  14.       printf("使用方法: pipesort <輸入文件名>;\n");
  15.       exit(1);
  16.    }

  17.    names = fopen(argv[1], "r");
  18.    if (NULL == names)
  19.    {
  20.       perror("fopen");
  21.       exit(1);
  22.    }

  23.    if (fork() == 0)
  24.    {
  25.       //子進(jìn)程代碼
  26.       close(0);      //關(guān)閉標(biāo)準(zhǔn)輸入文件描述符
  27.       dup(fd[0]);      //復(fù)制管道的輸入端到標(biāo)準(zhǔn)輸入
  28.       close(fd[0]);   //關(guān)閉多余的管道描述符
  29.       close(fd[1]);   //此處不使用管道的寫入端口
  30.       execlp("sort", "sort", NULL);
  31.       perror("execlp");
  32.       exit(0);
  33.    }

  34.    //父進(jìn)程的代碼.
  35.    close(fd[0]);   //不使用管道的讀入端口.
  36.    if (sort = fdopen(fd[1], "w") == NULL)
  37.    {
  38.       //無法打開管道寫入端
  39.       perror("fdopen");
  40.       exit(1);
  41.    }

  42.    //復(fù)制數(shù)據(jù)到sort程序
  43.    while ((ch = getc(names)) != EOF)
  44.    {
  45.       putc(ch, sort);
  46.    }

  47.    fclose(names);
  48.    fclose(sort);
  49.    return (0);
  50. }
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2005-07-15 14:58 |只看該作者

如何讓程序接收stdout管道的內(nèi)容?

哥們,你的代碼好像不是我想要的.

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2005-07-15 15:09 |只看該作者

如何讓程序接收stdout管道的內(nèi)容?

從stdin讀就是了

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2005-07-15 16:45 |只看該作者

如何讓程序接收stdout管道的內(nèi)容?

[quote]原帖由 "FH"]從stdin讀就是了[/quote 發(fā)表:


試過,也不行.

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2005-07-15 16:54 |只看該作者

如何讓程序接收stdout管道的內(nèi)容?

原帖由 "jetrix" 發(fā)表:


試過,也不行.


帖源碼。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP