• ベストアンサー

C言語(Windows)からUNIXに移植したことある人

C言語(Windows)からUNIXに移植したことある方はいらっしゃいますか? ある方がいらっしゃいましたら、移行の仕方等教えて下さい。その際の 注意点等ありましたらお願いします。 やろうとしていることは、Windowsの通信制御アプリをSolarisに 移植です。なのでWinsock関係などの情報が知りたいです。 通信制御アプリなのでCUIだと思いますが、もしGUIの場合UNIXではどうなるのでしょうか?

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

  • ベストアンサー
  • mcWalker
  • ベストアンサー率69% (27/39)
回答No.1

私もレスを楽しみにしていたのですが、付きませんね。 レスがないと、削除されますので、当て馬代わりに。 私も GTK+ でやろうとしていますが、環境がまだです。 それに、通信関係は畑が違うので、ご希望にはそえませんが、 これまでの移植への感触では、 1.API が対応していれば、その部分は容易でないでしょうか。   MFC が使ってあると、ちょっと難題かも。 2.リソースでカバーしていると、面倒でしょう。 3.GUI になると、再構成が必要になる可能性があります。   サンプルを見ると、絵文字で表示している例があり、   ちょっとぞっとしています。 ソースが公開されている UNIX からの移植は多そうですが、 逆は、例が少ないというか、やっている人が少ないというか、 余程、覚悟が必要な気がしています。   Linux をインストールして、ドライバなどないと作動しないことがあり、   win のを出している会社に聞くと、サポートなしというところが、   (まだ)多そうなので、移植が進むと助かると期待しています。

mako-kwnsh
質問者

お礼

お返事ありがとうございます。 やはりGUIが絡むと厄介そうですね.... プロジェクト自体の詳細はまだわからないのですが、 念のためにGUI回りを調べて勉強してみます。 後、mcWalkerさんはGTK+ でGUIを構築されるようですが、Solarisの場合どうなるのでしょうか? お恥ずかしい話なのですが、私はUNIXでGUIの アプリを作ったことがありません。色々調べていると MotifやらTCL/TK?など色々あり どれから手をつければよいのかわかりません。 mcWalkerさんがGUI環境構築にGTK+ を選定したのは どういった理由なのでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nobe
  • ベストアンサー率66% (59/89)
回答No.3

すみません。 ご参考になるかどうかわかりませんが、 以前に、ご質問の場合とはまったく逆の、 Unix→Windowsの移植をしました。 Sorarisということですので、 UnixのSocketはバークレイ準拠のものと考えてよいのでしょうか? ソケットですが、基本的な流れは同じですが、 Windowsではソケット扱いが根本的に違いますよね。 バークレイでselectを使うソケットの同期があるように WindowsにもWSAAsyncSelectやWSPAsyncSocketがありました。 バークレイではソケットのハンドルに対してselectするのに対し Windowsでの同期の対象はハンドルというよりウィンドウ自体で、 同期の通知をウィンドウのイベントで受けるようになっています。 またWindows版にもバークレイ的扱いをするselect関数があるのですが 動作がまったく違う動きをするので注意が必要です。 賛否両論の意見ではありますが、 MFCで元のソースが実装されているなら 差ほど移植は難しくないと考えてよいと思います。 私は今は無きWinsockやTranpetの開発供給元であった stardast社のご協力を得てお仕事をしたことがあります。 結果的に移植の要は、socketのシステムに付随する箇所を 見ないで、中身だけを追ったほうがやりやすいということでした。 たとえばメールサーバーを作るときは、 RFCに付随してプロトコルをチェックしますよね。 で、実際の送受信の処理を書くわけですが、WindowsとUnixでは 根本的にシステムの考え方が違うためsoketを見つめてしまうと とても大変なわけです。 なので、実際に送信されるデータ、実際に受信されるデータのみに 的を絞って抽出し、ソケットの重要なところは飛ばして 別ソースに搾り出して行きます。 勿論、元のソースがあった場所のマーキングはしておきます。 クリティカルな送受信の処理だったら対処が大変ですからね。 あとは、本来のシステムの仕様を忘れて、  → ここが肝心です、忘れてしまうのです! 本当にクリティカルな部分を調べ、双方に実装の違いと 利点を見出して移植先のシステムの該当する箇所に 抽出したコードを載せて行きます。 すると案外簡単に行ったりします。 Sorarisならバークレイベースのはずですから バークレイベースのソケットは仕組みも見た目も単純で悩むことなんてありません。 Sun Microsystemsの仕事をした経験からですが、 SorarisでGUIといえば、SunのベンダーではMotifというものを使います。Suntools等が含まれています。 そこではソケットはバークレイベースです。 Soraris4辺りからSystem5ベースで若干変わりましたが そんなに違いはありません。GUIであってもWindowsの様にシステムとAPIが密接に絡みつくことが無いのでとてもスマートに出来ています。 ご参考になりましたでしょうか。 何か具体的な例でもあればよいのですが 申し訳ありません。

mako-kwnsh
質問者

お礼

お返事ありがとうございます。 やはり仕様の部分と通信の部分を切り分けを行うことが 重要ですね。仕様の部分は変わらないので、通信の部分 の両プラットフォームの違いを把握することが肝心ですね。 nobeさん貴重な情報をいただき誠にありがとうございます。

すると、全ての回答が全文表示されます。
  • mcWalker
  • ベストアンサー率69% (27/39)
回答No.2

私は趣味のプログラミングの方ですが、多少、参考になれば。 GUI の種類は、会社の方針とか、一緒に仕事をしているとかで 制約があるかと思いますが、そうでなければ、一番流布して いるものが、分からないとき聞けるというので、よいでしょう。 GTK+ を取りあえず選んだのは、行っている本屋で見たせいです。 (タダでいろいろ揃いそうな点も決め手でした) Wide Studio とかも漁ったのですが、皆さん難渋しているみたいで、 もう少し後かなと思いました。 Windows でいうところの message 処理が、GTK+ ではちょっと 面倒な印象を持っています。 余計なことですが、Macintosh から転向したもので、どれも 違和感を否定できません。できるはずだとAPIなど探してしまいます。 (検索手段がそろっているってのも欠かせませんね。)

mako-kwnsh
質問者

お礼

2度もお返事をいただきありがとうございます。 >一番流布しているものが、分からないとき聞けるというので、よいでしょう たしかにそうですね。わからない部分などを聞くこともできるし、 バグの情報なども豊富だと思うので、 まだ完全な仕様は固まっていないのですが、いい機会なのでGUI回りを 調べてみます。

すると、全ての回答が全文表示されます。

関連するQ&A