問題タブ [darwin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
212 参照

bash - シェル スクリプトが 2 回目の試行で失敗するのはなぜですか?

このスクリプトは、一連の検索用語を受け入れ、Google を検索するための書式設定された URL を返す必要があります。

それはうまくいくので、特定のサイトを検索するオプションを追加するか、-sまたは-Sフラグを使用してそのサイトを無視することにしました。

これは、スクリプトを初めて実行するときは機能しますが、その後のすべての試行で失敗します。

新しいターミナル ウィンドウを開くか、ターミナルを再起動すると、この問題が解消され、失敗する前にもう一度試行できるようになります。

スクリプト:

このスクリプトの信頼性を高めるには、何を変更する必要がありますか?

0 投票する
1 に答える
1079 参照

gcc - -shared と -bundle gcc フラグの違いは何ですか?

内部で dlopen を使用して共有ライブラリ libabc を動的にロードして実行する abc という小さな C プログラムがあります。libabc は、実行時に動的に読み込まれて呼び出される関数 greeting を宣言します。次の 2 つの方法でコンパイルして実行すると、結果は同じになります。共有オブジェクト (.so) C ライブラリを作成するときの GCC コンパイラの -shared フラグと -bundle フラグの違いは何ですか?

方法 1

方法 2

ダーウィン gcc 4.2 の使用

0 投票する
0 に答える
410 参照

c - Mac OS X - netstat で「%d を 2 回取得しました」というエラーが表示されるのはなぜですか?

netstatMac OS X コンピューターで「got 4 を 2 回」のようなものが出力 される理由を理解しようとしています。

例えば:

メッセージは、netstat のinet.cprotoprによって、基本的に次のことを行う関数で出力されます。

  • sysctlbyname(3)PCB のリストを取得するためにeg を使用して呼び出しnet.inet.tcp.pcblist_nます (推測しますか?)
  • 結果をループし、さまざまな構造体へのポインターを収集します。xgn_kind
  • 見たそれぞれについてビットを設定しますxgn_kind。いずれかが 2 回表示されると、メッセージで不平を言います"got %d twice"

コードの関連部分を切り取りました。

私の質問は、最後に:

なぜこうなった?から戻ってきたのは、誤ったデータsysctlですか? 上記のループは間違っていますか、つまり、sysctl実際には種類ごとに複数の構造体を返すことができますか?

私は Mac OS X を実行していることに注意してください。コードは実際、 FreeBSD のものとは少し異なります。

0 投票する
1 に答える
179 参照

boost - Boost.Wave 1.52は、Darwinでclang++を使用してビルドされません

コンパイルブーストC++11 clang macを適用しましたが、cstddefが見つからず 、次のようにビルドを呼び出しました ./b2 variant=debug,release --layout=versioned toolset=clang cxxflags="-fPIC -std=c++11 -stdlib=libc++ -arch i386 -arch x86_64" linkflags="-stdlib=libc++ -arch i386 -arch x86_64" threading=multi link=shared --stagedir=stage_darwin_intel_shared_mt stage

そして、警告のログとBoost.Waveが失敗することを除いて、すべてが構築されます:http: //pastebin.com/ZHkmTWaq

PSブーストの静的フレーバーはWaveをうまく構築します。

0 投票する
0 に答える
1953 参照

xcode - OSX上のコードレスkext

わかりました。uControllerプロジェクト(ポインティングデバイス)に取り組んでいます。ユーザースペースドライバーを作成しようとしていますIOkit.framework

idProductとidVendorを使用して、IOUSBInterfaceInterface300objを取得できます

問題は私が試してみるときです

kr = (*intf)->USBInterfaceOpen(intf);

で失敗します。kIOReturnExclusiveAccessおそらく、HIDマネージャがすでに排他的アクセスでデバイスを開いているためです。

ここでは、コードレスkextがHIDManagerによるデバイスの乗っ取りを防ぐことができると述べています

MacでのUSB(HID)割り込みエンドポイントの読み取りと書き込み

idVendorとを使用してkextを作成し、idProductkextloadを使用してロードしました。kextloadから「正常にロード」されました

しかし、どういうわけか私はまだインターフェイスを開くことができませんか?私は何か間違ったことをしていますか?

ファイル名Info.plist(idProductとidVendorを調整したその投稿と同じコンテンツ)を作成してkextを作成し、MyUSBDeviceTest.kextという名前のフォルダーに配置しました。

次に、所有者をroot:wheelに変更し、次にkextをコピーします/System/Library/Extensions

デバイスを再起動して再接続しようとしましたが、HIDシステムからインターフェイスを取得できません

0 投票する
1 に答える
357 参照

c - wcscoll 関数が汚染されているとマークされています。どうすればよいですか?

Mac Os X 10.6.8 では、これを解決するまで、標準ライブラリの wchar_t 関数を使用してコードをコンパイルできません。

wcscoll 関数とその他の関数:

inttypes.h :#pragma GCC ポイズン wcstoimax wcstoumax stdlib.h :#pragma GCC ポイズン mbstowcs mbtowc wcstombs wctomb wchar.h :#pragma GCC ポイズン fgetws fputwc fputws fwprintf fwscanf mbrtowc mbsnrtowcs >mbsrtowcs putwc putwchar swprintf swfscanf vfscanwprintf vsfscanwprintf vsfscanwprint wcrtomb wcscat wcschr wcscmp wcscoll wcscpy wcscspn wcsftime wcsftime wcslcat >wcslcpy wcslen wcsncat wcsncmp wcsncpy wcsnrtombs wcspbrk wcsrchr wcsrtombs wcsspn wcsstr >wcstod wcstof wcstok wcstol wcstold wcstoll wcstoul wcstoull wcswidth wcsxfrm wcwidth >wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf

これを解決するにはどうすればよいですか? 標準ライブラリをいじるのは少し気が進まない。しかし、Apple が修正していなければ、GNU C ライブラリをコンパイルできるのではないでしょうか? または、ワイド文字 (Utf-8) を処理するためのライブラリの中で、他の適切な代替手段はありますか。

古いものを移植しているので、本当に ncurses を使用する必要があり、ncurses を使用するにはワイド文字が必要です! :)

編集:私が理解しているように、標準のインクルードパスは /usr/include である必要があります。私が持っている SDK のインクルード ディレクトリを調べたところ、そこにあるヘッダー ファイルを grep すると、http://opensource.apple.com/tarballs/Libc/ の最新の tarball と同じように、同じ有害なプラグマが明らかになりました

編集++

後知恵で言えば、これらのプラグマには理由があり、代替手段を探していたので、今、ダウンロードしたばかりの glibc をビルドしようとしています。ヘッダーを調べましたが、「GCC ポイズン」プラグマはありません。

glibc の構成ファイルを少し読んだところ、これは簡単なオプションではないと思います。方法を理解するには、utf-8 で動作し、mac osX で ncurses を使用するものを分析する必要があると思います。

簡単な解決策を見落としているだけかもしれません。しかし、ncurses は 7 ビット ascii にフォールバックします。これが私の問題です。私の目標は、ncurses を使用しながら、utf-8 言語固有の文字をレンダリングすることです。フォーマットは索引付けの「専有」であるため、ソートできるようにする必要があります。レコードをソートするためのシステムコールをフォークすることはオプションではありません。また、ncurses を使用して、フィールド編集、表示からの文字の挿入および削除のために、何らかの文字列に含まれるコードポイントの数を知る必要があります。

ありがとう!

0 投票する
0 に答える
163 参照

macos - OS X に不足しているコード ページ (charmap) をインストールする方法

システムに特定のコード ページ (IBM-1146) がありません。インストールする必要があります。しかし、私は方法を見つけることができません。グーグルはそれについて非常に静かです。

iconv が不平を言うので、それが欠落していることはわかっています: iconv: conversion from IBM-1146 unsupported

そしてiconv -l、charmap がインストールされていないことを確認します。いくつかの調査では、を使用してインストールできることが示唆されていlocaledefましたが、ネット上のどこにも対応するcharmapファイルが見つかりません。

どんな助けでも大歓迎です。

0 投票する
0 に答える
336 参照

linux - OS X / iOS での mmap 後のファイル変更

mmapand flagを使用してファイルをメモリマップした後MAP_PRIVATE、同じプロセスで基になるファイルに変更を加えるとどうなりますか? mmapメモリは変更を反映しますか?

Linux の場合、man ページには次のように記載されています。

MAP_PRIVATE: プライベート コピー オン ライト マッピングを作成します。マッピングの更新は、同じファイルをマッピングする他のプロセスには表示されず、基礎となるファイルには反映されません。mmap() 呼び出し後にファイルに加えられた変更が、マップされた領域に表示されるかどうかは指定されていません。

したがって、Linux では、答えは「未指定」です。

ただし、Mac OS X では次のように表示されます。

MAP_PRIVATE: 変更は非公開です (コピー オン ライト)。

変更を行ってもプライベート マッピングに影響しないことを示すように見える簡単なサンプル ツールを作成しました。しかし、これ以外の証拠はありません。

0 投票する
2 に答える
2482 参照

macos - host_statistics64()が一貫性のない結果を返すのはなぜですか?

OS X 10.6.8のhost_statistics64()(他のバージョンにこの問題があるかどうかはわかりません)が、RAMの合計量に達しない、空き、アクティブ、非アクティブ、および有線メモリのカウントを返すのはなぜですか?そして、なぜそれは一貫性のないページ数を失っているのですか?

次の出力は、10秒間にフリー、アクティブ、非アクティブ、または有線として分類されなかったページの数を表します(およそ1秒に1回サンプリングされます)。

上記の数値を生成するコードは次のとおりです。

0 投票する
0 に答える
1117 参照

macos - OSX / Darwin で単一プロセスのメモリ使用量を制限する

プロセスが消費できるメモリの量を制限するために、一部の JNI コードを変更しようとしています。Linux と osx で setRlimit をテストするために使用しているコードを次に示します。Linux では期待どおりに動作し、buf は null です。

このコードは、制限を 32 MB に設定してから、64 MB バッファーの割り当てを試みます。バッファーが null の場合、setrlimit は機能します。

Linuxマシンでは、これが私の結果です

OS X 10.8 の場合

私の質問は、これが osx で機能しない場合、darwin カーネルでこのタスクを実行する方法があるかということです。マニュアルページはすべて動作すると言っているようですが、動作しないようです。launchctl がメモリ制限をサポートしていることを見てきましたが、私の目標はこの機能をコードに追加することです。ulimit も使用してみましたが、これも機能せず、ulimit が setrlimit を使用して制限を設定していることは確かです。また、setrlimit のソフトまたはハードリミットを超えたときにキャッチできるシグナルはありますか。私はそれを見つけることができませんでした。

Windowsでも実行できる場合のボーナスポイント。

アドバイスをありがとう

更新
指摘したように、RLIMIT_AS はマニュアル ページで明示的に定義されていますが、RLIMIT_RSS として定義されているため、ドキュメントを参照すると、RLIMIT_RSS と RLIMIT_AS は OSX 上で交換可能です。

/usr/include/sys/resource.h osx 10.8 の場合

ここで説明されているRLIMIT_DATAを使用するというtrojanfoeの優れた提案をテストしました

結果は linux と osx で同じで、どちらも malloc が成功しました。