【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

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

A 回答 (2件)

「~」が 8160 とか「A」が 8260 ということは, SHIFT JIS ですね....



UNIX であれば SHIFT JIS は避けて EUC にした方が問題は少ないと思うのですが, sh のメタキャラクタの前にがんばって \ を付けていくことでうまくいく*かも*しれません. やったことはないので憶測に過ぎませんが.
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/20 14:19

system(3) だとシェル (sh) を起動しますから, $ があれば変数を展開しようとするし ` があればコマンドだと思っちゃいます.



で, 使いたい「日本語」の文字コードは?

この回答への補足

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

補足日時:2004/08/19 20:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報