• ベストアンサー

system関数に日本語の引数を渡すことは出来ますか

UNIXのsystem関数を使ってコマンドを起動する際、そのコマンドに日本語の引数を渡すことは出来ますか。 例えば、2バイト目に「0x60(`):逆引用符」を含む文字を引数に指定すると、"syntax error"となります。 シェルが、逆引用符を別コマンドの実行と誤解しているからとも思えますが、はっきりしません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「~」が 8160 とか「A」が 8260 ということは, SHIFT JIS ですね.... UNIX であれば SHIFT JIS は避けて EUC にした方が問題は少ないと思うのですが, sh のメタキャラクタの前にがんばって \ を付けていくことでうまくいく*かも*しれません. やったことはないので憶測に過ぎませんが.

s-july
質問者

お礼

質問の意味を取り違えておりました。 扱う文字コードは、SHIFT_JISです。 クライアント(Windows)から受取ったデータをそのままの形式で保持する必要があるためEUC変換は難しそうです。 systemは諦めて、fork&execでの実装を検討したいと思います。 様々なアドバイス、ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

system(3) だとシェル (sh) を起動しますから, $ があれば変数を展開しようとするし ` があればコマンドだと思っちゃいます. で, 使いたい「日本語」の文字コードは?

s-july
質問者

補足

早速の回答ありがとうございます。 使いたい「日本語」の文字コードなのですが、特定できませんが、~「8160」、A「8260」などが考えられますし、他にも2バイト目に「$」や「\」のコードがくる日本語も考えられます。 このような場合は、forkとexecで行う以外にありませんか?子プロセスの終了待ち処理等が面倒ですので、systemで出来ないかと思ったしだいです。

関連するQ&A