2016-04-20 33 views
-3

我想在linux(ubuntu)中使用nano ceditor編寫C語言程序,以便在同一時間ping多個設備,目標是檢索有關ping。 程序是這樣的:使用c編程在nano linux中ping 6程序

#include <stdio.h> 

main() 
{ 
    int i; 
    for (i=0; i<9; i++) 
     printf("pinging device number:%d",i); 
     ping6 fe80::acbd:ff:fe00:i%nstack -c 2 
       printf(" \n Done"); 

} 

用ping它工作正常,但使用IPv6 IM和它不工作。 注:如果我單獨做ping6命令它的工作原理及其只是當IM把它在我的計劃 謝謝

+1

什麼?你的代碼是否被編譯? O.o – anukul

+0

「通過ping可以正常工作,但是......」ping代碼的外觀如何?標準C和C++,或甚至一般可用的Linux頭文件我知道沒有ping或ping6 C庫函數 –

+0

您是否考慮過構建一個字符串並將其用作'system()'的參數? –

回答

2

張貼的代碼中包含了幾個問題:

大多數的這些問題都屬於問題的評論。

下面的代碼完全編譯並執行所需要的功能

#include <stdio.h> // printf() 
#include <stdlib.h> // system() 

int main(void) 
{ 
    int i; 

    for (i=0; i<9; i++) 
    { 
     printf("pinging device number:%d\n",i); 
     system("ping6 fe80::acbd:ff:fe00:i%nstack -c 2"); 
    } 
    printf(" \n Done\n"); 
} 

從上面的代碼輸出爲:

pinging device number:0 
unknown host 
pinging device number:1 
unknown host 
pinging device number:2 
unknown host 
pinging device number:3 
unknown host 
pinging device number:4 
unknown host 
pinging device number:5 
unknown host 
pinging device number:6 
unknown host 
pinging device number:7 
unknown host 
pinging device number:8 
unknown host 

Done 

您可以從您的網絡達到一個有效的主機。

但是,請記住關於無法執行路由的手冊頁的摘錄。

(編輯)下面的代碼完全編譯和使用sprintf()

不過,我覺得沒有什麼支持第六屆地址:1%nstack參數!我希望只看到設備號碼,而不是文字:%nstack我錯過了什麼?

#include <stdio.h> // printf(), sprintf() 
#include <stdlib.h> // system() 

int main(void) 
{ 
    int i; 

    char pingCmd[100] = {'\0'}; 

    for (i=0; i<9; i++) 
    { 
     printf("\npinging device number:%d\n",i); 
     //system("ping6 fe80::acbd:ff:fe00:i%nstack -c 2"); 
     sprintf(pingCmd, "%s%d%s", "ping6 -c 2 fe80::acbd:ff:fe00:", i, "%nstack"); 
     printf("%s\n", pingCmd); 
     system(pingCmd); 
    } 
    printf(" \n Done\n"); 
} 

從上面的輸出結果是:

pinging device number:0 
ping6 -c 2 fe80::acbd:ff:fe00:0%nstack 
unknown host 

pinging device number:1 
ping6 -c 2 fe80::acbd:ff:fe00:1%nstack 
unknown host 

pinging device number:2 
ping6 -c 2 fe80::acbd:ff:fe00:2%nstack 
unknown host 

pinging device number:3 
ping6 -c 2 fe80::acbd:ff:fe00:3%nstack 
unknown host 

pinging device number:4 
ping6 -c 2 fe80::acbd:ff:fe00:4%nstack 
unknown host 

pinging device number:5 
ping6 -c 2 fe80::acbd:ff:fe00:5%nstack 
unknown host 

pinging device number:6 
ping6 -c 2 fe80::acbd:ff:fe00:6%nstack 
unknown host 

pinging device number:7 
ping6 -c 2 fe80::acbd:ff:fe00:7%nstack 
unknown host 

pinging device number:8 
ping6 -c 2 fe80::acbd:ff:fe00:8%nstack 
unknown host 

Done 
+0

如果您修改上述代碼以使用類似'sprintf()'的命令爲ipv6地址創建所需的字符串(與剩下的字符串傳遞給'system()'),那麼它實際上可能找到一些主機。 – user3629249

+0

謝謝你對系統()的評論,實際上改進之處在於,現在ping6可以工作,但問題在於他給未知的主機,因爲他不理解的i整數是命令行的一部分。當我ping系統系統(「ping6 fe80 :: acbd:ff:fe00:2%nstack -c 2」)時,我會自己探索它,但是當我替換2時,它不起作用。我想它是一個簡單的概念,我想念你能幫忙嗎? – Fred