張貼的代碼中包含了幾個問題:
大多數的這些問題都屬於問題的評論。
下面的代碼完全編譯並執行所需要的功能
#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
什麼?你的代碼是否被編譯? O.o – anukul
「通過ping可以正常工作,但是......」ping代碼的外觀如何?標準C和C++,或甚至一般可用的Linux頭文件我知道沒有ping或ping6 C庫函數 –
您是否考慮過構建一個字符串並將其用作'system()'的參數? –