これは愚かな質問かもしれませんが、既にここで取り上げられている場合はお詫びしますが、大したことはありません。私はCでインターフェイスのハードウェアアドレスを取得しようとしており、OS X(x86-64)を使用しています。私はifconfig
でそれを得る方法を知っていますが、自分のプログラムが自動的にすべてのコンピュータ、つまり少なくともOS Xのコンピュータで取得されるようにしたいと思います。私はこれを投稿した別のスレッドを見つけました。linkいくつかの変更を加えてほしいものがほとんどありますが、iokit
関数のリンクを(私のコンパイラはgcc
)にできません。 gcc
コマンドラインにフラグ-lIOKit
と-framework IOKit
を追加しようとしましたが、同じリンクエラーが発生します。私のコードへのリンクはheaderとsourceです。OS XのインターフェースからのMACアドレス
7
A
答えて
6
This little program OSXの変更なしで動作します。
コード:(FreeBSDのリストからAlecs王にクレジット)
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int mib[6], len;
char *buf;
unsigned char *ptr;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
if (argc != 2) {
fprintf(stderr, "Usage: getmac <interface>\n");
return 1;
}
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
if ((mib[5] = if_nametoindex(argv[1])) == 0) {
perror("if_nametoindex error");
exit(2);
}
if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {
perror("sysctl 1 error");
exit(3);
}
if ((buf = malloc(len)) == NULL) {
perror("malloc error");
exit(4);
}
if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {
perror("sysctl 2 error");
exit(5);
}
ifm = (struct if_msghdr *)buf;
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
printf("%02x:%02x:%02x:%02x:%02x:%02x\n", *ptr, *(ptr+1), *(ptr+2),
*(ptr+3), *(ptr+4), *(ptr+5));
return 0;
}
あなたは、しかし、私はいつもノー...パブロフの犬を持っていたと考えsize_t len;
+0
ありがとう、それはまさに私が欲しかったものです。 –
関連する問題
- 1. のMac OS X
- 2. Mac OS XのコマンドラインからバッチモードのMathematica
- 3. Appleのアドレス帳からMac OS X LionのアプリにvCardをドラッグできない
- 4. のMac OS X 10.11.4
- 5. MAC-OS Xのネットワークセキュリティ
- 6. Mac OS XのNCReport
- 7. Mac OS Xのカバレッジテストツール?
- 8. フォース - のMac OS X
- 9. Mac OS Xのデータベース
- 10. Mac OS Xのプログラムイントロ
- 11. Mac OS Xのキャプチャファンクションキー
- 12. のMac OS X NodeJS:Macのポートを使用して、MAC OS X上
- 13. Mac OS Xでのパターンによるローカルホストへのアドレスのリダイレクト
- 14. mac os x
- 15. Mac OS X 10.12.5
- 16. ジオジャンゴMAC OS X
- 17. は、Mac OS X
- 18. アップグレードMAC OS X
- 19. .NETアプリケーションからMac OS Xアプリケーションへ?
- 20. Mac OS Xのウェブサイトのサブフォルダ
- 21. アンインストールジャンゴは、Mac OS X
- 22. Mac OS Xルートゲートウェイリンク#5
- 23. TFS on Mac OS X
- 24. Mac OS X Lionフルスクリーンイベント
- 25. Mac OS Xにインストール
- 26. Mac OS X用UIPopoverController?
- 27. GKSession with Mac OS X
- 28. Mac OS Xアプリリモートカメラコントロールwifi
- 29. SDL + emacs + Mac OS X
- 30. Mac OS X + cakephp + SqlServer
に
int len;
を変更する必要がありますか? –ええ、私の名前は言葉だけの遊びです。 –