1

プログラムが実行されているプラ​​ットフォームをどのように検出できるのか疑問に思いました。アプリケーションがあり、LinuxマシンかMacマシンかに応じて、特定のフォルダーに移動する必要があります。

ありがとう!

4

4 に答える 4

2

将来的には機能しなくなる可能性がありますが、現時点では、両方のファイルシステムの違いを多数試すことができます。

  • / Applications、/ Developer、/Libraryなどはmac固有です。あなたがそれらを持っているなら、それはマックのように見えます。
  • / proc、/ home、/srvなどはLinux固有です。それらがそこにある場合、それはLinuxマシンのように見えます。完全なリストを参照してください。

これらのパスチェックのトリックのいくつかを関数に組み合わせると、他のトリックとは独立して失敗するトリックのいずれかから身を守ることができます。

statを使用して、フォルダの存在を確認できます。

struct stat st;
if(stat("/proc",&st) == 0) {
    printf(" /proc is present: this may be Linux\n");
}
于 2010-03-30T03:13:55.807 に答える
2

おそらくMacまたはLinux専用にプログラムをコンパイルする必要があるので、ある種のプリプロセッサディレクティブを使用できます。このマクロのリストが役立つ場合があります。

于 2010-03-30T01:58:14.067 に答える
1

uname()システムコールは、OSのバージョンについて通知します

于 2010-03-30T02:01:18.413 に答える
0

Unixを使用していることがわかっている場合は、「uname」を実行すると、システムについてかなりの情報が得られます。あなたがもっと知る必要があるなら。もちろん、それは外部の実行可能ファイルに依存しています。

確認できる環境変数があるはずですが、どれかわかりません。

于 2010-03-30T01:54:26.573 に答える