
No.2ベストアンサー
- 回答日時:
こんにちは。
No.1さんお答えのようにそのまま書けばOKですが、
Cプログラムの中から呼ぼうというのは特別わけがあるのでしょうか。
ping はエラーコードとしてリモートホストが正常にパケットに反応すれば0、
向こうが応答パケットを返してこなければ1、
ホストがダウンしているなら2を返します。
詳細は「man ping」で。
こんなプログラムをでっち上げてみました(仮称 pingpong.c)。
引数に任意のホスト名または IP アドレスを取れます。
$ pingpong www.example.org
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF 64
#define CHECKCOUNT 5
int main(int argc, char *argv[])
{
int result;
char command[BUF];
char *hostptr = "192.168.0.0";
if (argc == 2) hostptr = argv[1];
if (strlen(hostptr) >= BUF-25)
{
fprintf(stderr, "Hostname too long.\n");
exit(4);
}
/* ping コマンドは饒舌で、-q をつけても完全には黙りません */
sprintf(command, "ping -q -c %d %s >/dev/null", CHECKCOUNT, hostptr);
result = system(command);
/* シェルスクリプトに戻り値を判断させたいなら以下は不要で
すぐに return result; してください */
switch (result)
{
case 1:
puts("No packets received.");
return result;
case 2:
puts("Host unreachable");
return result;
}
return result;
}
No.1
- 回答日時:
あなたがお書きになっている通りに、
#include <stdlib.h>
int main() {
system("ping -c 3 127.0.0.1");
}
でできます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のfor文です。 繰り返しの...
-
アルファベットの出現頻度求め...
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
switch文で文字を比較すること...
-
ftoa の作り方
-
CStringをwchar_tに変換したい
-
C言語のポインターで詰まっている
-
配列をnビットシフトする
-
【C言語】構造体内の領域解放(...
-
文字を16進変換
-
c++ 文字列を入力して、一文字...
-
起動時の引数の取得方法が分か...
-
pingの結果を取得する方法
-
char* を渡したとき、不適切なP...
-
fgetc()関数の動作について
-
charからLPTSTRへの変換方法
-
charでの計算?
-
間接操作のレベルとは
-
テキストデータをそのままバイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体の各メンバにfor文からア...
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
間接参照のレベルが異なっています
-
c++ 文字列を入力して、一文字...
-
C言語の入力した文字を反転させ...
-
charからLPTSTRへの変換方法
-
ネットワークにつながっている...
-
'const char *' 型は 'char *' ...
-
テキストデータをそのままバイ...
-
c言語でユーザ関数を利用して入...
-
atoi( ) の反対をやりたい
-
間接操作のレベルとは
-
-'0'の意味について
-
double型の値をchar配列に変換...
-
Linuxでフォルダ内全ファイル名...
-
配列をnビットシフトする
-
型変換
おすすめ情報