2011-03-03 22 views
1

讓我們說,cmd1在標準輸出上打印一些東西。我怎樣才能用C中的cmd1捕獲它,使得cmd1 | cmd2的作品。從C中的函數捕獲結果(cmd1 | cmd2)

cmd1{ 
    fprintf(stdout, "Hello"); 
    } 

cmd2 : should take "hello" and only print "hel". 
+1

cmd1和cmd2函數是在同一個程序中,還是他們是命令行程序? – Satya 2011-03-03 03:44:55

回答

2

要啓用流水線操作,CMD2應該stdin讀取。

例如,由於fgets()stdin讀取,你可以這樣做:

#include <stdio.h> 

int main() { 
    char buf[1024]; 
    while (fgets(buf, sizeof(buf), stdin)) { 
     printf("%.*s\n", 3, buf); 
    } 
    return 0; 
} 
+0

如果輸出在多行上,那麼該怎麼辦呢?line1:hello,line2:hello,line3:hello。我只想打印前兩行,但都是「hel」 – user461316 2011-03-03 03:50:22

+0

這聽起來像是一個不同的問題。我的答案是否滿足*這個問題? – 2011-03-03 03:54:47

0

標準輸出如何與其他程序交互無關使用C - 這是操作系統。然而,每一個操作系統上我用打字

cmd1 | cmd2 

將CMD1的標準輸出發送到CMD2的標準輸入。

如果這不起作用,那麼你可能需要刷新你的cmd1程序中的緩衝區。 (這取決於很多東西......但試試吧。)