Smartphonemoriyoshiの日記この広告は、90日以上更新していないブログに表示しています。-efってやるんだけど、Macだとだめなんだよね」id:moriyoshi「え?使えるよ?何いってんの?」という話になり*1、この違いの原因を突き止めることに。「バックドアとか仕掛けられてない?」「んなわけねーよ」とかいいながらBluetooth経由で/bin/psを送ったりとかsuidビットを落としてみたりとかいろいろ試してみると、iTermではだめで、Terminalでは大丈夫ということが判明、ますます混乱する。psのソースを見てみると*2...以下主要部分のみ抜粋。...}u03という変数の値により、受け付けるオプションの種類を変えているのが一目瞭然だ。u03自体はCOMPAT_MODEという謎マクロの値となっている。tounix03.compat(5)COMMAND_MODEという環境変数の値をlegacyとかにしてやると、UNIXユーティリティの挙動が変わるという感じらしいことがわかる。[-L]確かにエラーになった。おかしい挙動を示します。しても解決方法は分りませんでした。ご存知の方は教えて下さい。動きがかわるらしいです。コメント欄にヒントが書いてあるのを発見。option.などとかなり適当なことが書いてあるわけです。error.と書かれていたので、次のようなテストプログラムを書いて実験してみた。}}コンパイルオプションは以下。test.cしかし、これでもうまく行ってしまう。getenv("COMMAND_MODE"));してみると、これがlegacyとなる。[-L]となり、鍵は-frameworkらしいということがわかる。ldに-Wl,-tとして-tオプションを渡し、リンク時に読み込んでいるファイルを確認して、-frameworkに与える名前をいろいろ確認するという作業を繰り返した結果、CoreFoundationがリンクされていて、さらに-mmacosx-version-min=10.4以下に設定されている場合に何かが起こっているらしいということが判明。環境変数DYLD_PRINT_ENVを設定してtestを実行すると、COMMAND_MODE=legacyとなっていることが確認できるので、dyld自体がCOMMAND_MODEをハンドルしているのではないかと想像されるものの、詳細は不明ということで調査は一旦打ち切りにしたい。(前編)「鬼車の[[:print:]]はPOSIX流じゃないらしい」でid:ockeghemさ...2008-10-04kmyaccのPHP対応パッチをリエントラントにしたよ今回作ったものをどう簡単に説明できるかわからないけど。