• ベストアンサー

UNIXの関数をWindowsで使用するには?

今までUNIX系OSで作成したプログラムを WindowsXPでVisualStudioでコンパイルしたいと思っています。 ここで、 pipe、fork、execl、wait、waitpidの関数を使用するためには、 どのヘッダファイルをインクルードすれば良いでしょうか? どれか1つの関数でも良いので回答をお願いします。 宜しくお願いします。

noname#210749
noname#210749

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.1

残念でしょうがありません。 自分で互換関数を作成するくらいのことをしないとないです。

noname#210749
質問者

お礼

お礼が大変遅くなってしまい、申し訳ございません。 ありがとうございました。

その他の回答 (3)

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

Cygwin 以外にも, SFU (今だと SUA) という方針もあったり.

noname#210749
質問者

お礼

お礼が大変遅くなってしまい、申し訳ございません。 ありがとうございました。

  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.3

VisualStudioでなくてもよいのであればcygwinというのがあります。

noname#210749
質問者

お礼

お礼が大変遅くなってしまい、申し訳ございません。 ありがとうございました。

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

ど~しても VisualStudio じゃないとダメなんでしょうか?

noname#210749
質問者

お礼

お礼が大変遅くなってしまい、申し訳ございません。 ありがとうございました。

noname#210749
質問者

補足

VisualStudioでなければ、 WindowsXPでコンパイルする方法があるという意味でしょうか?

関連するQ&A

  • WindowsでコンパイルできるがUNIXではできない

    下記のプログラムは、2^-0.94を計算するものです。 このプログラムはwindows2000のマシンでコンパイルできるのですが、UNIXのマシンだと Unresolved text symbol "pow" というエラーがでてコンパイルできません。 UNIXのマシンは「cc ファイル名」でコンパイルを実行します。 どうすればコンパイルできるようになるのでしょうか。お手数ですが、教えてください。よろしくお願いします。 ※windows2000マシンのコンパイラ:Borland C++ Compiler 5.5 #include <stdio.h> #include <math.h> int main() { int a; double b,c; a=2; b=-0.94; c=pow(a,b); printf("%lf\n",c); return 0; }

  • Linuxでforkやalarm,wait,waitpid,syscallなどを使ったサンプル

    今までWindowsのPerlを使っていました。 forkやalarm,wait,waitpid,syscallなど使ったことがなく、 LinuxのPerl5.8でそれらの関数を習得したいのですが、 何か良いサンプルはありますか? これに特化した書籍も探しています。 今作りたいものは、 forkで10個プロセスを作成して、ループし、 以下それぞれhello worldを表示させ終わったら、 1個目は終了しました。 2個目は終了しました。 ・・・ 10個目は終了しました。 終わり。 と表示させるプログラムが作りたいです。 fork,alarm,wait,waitpid,syscallなどプロセス操作、システムコール関数を全て使った良いサンプルも探しています。 ------------------------------------ それぞれのhellow word 1個目は 5秒後に hello worldを表示させる 2個目は10秒後に hello worldを表示させる ... 10個目は50秒後にhello worldを表示させる を使いますが、今まで

    • ベストアンサー
    • Perl
  • windowsプログラムのヘッダーについて

    SDKを用いてWindowsプログラムを作っています。 #include <ctime> とインクルードした上でclock()関数を使用したのですが、コンパイラから未定義の関数を呼び出したことになってエラーが出てしまいます。他のヘッダーも含めC++の標準ライブラリはインクルードできないのでしょうか? ちなみに、<time.h>でインクルードすればコンパイルできます。

  • forkの失敗???

    C++(UNIX)です。 以下のようなprogramをくみました。 comは自作のCシェルです。 ------------------- : pid_t ch_pid = fork(); cout << "ch_pid = " << ch_pid<< endl; int shell_ret = 0; int execl_ret = 0; int status = 0; if( ch_pid == 0) { cout << "execl(shell)" << endl; execl_ret = execl(com, com, NULL); cout << "execl ret = " << execl_ret << endl; } else if(ch_pid < 0) { cout << "fail to fork" << endl; cout << "errno = " << errno << endl; return 0; } waitpid(ch_pid, &shell_ret, 0); : ------------------ 実行したところ、 成功する[シェルが実行される]場合と、失敗する[シェルが実行されない]場合があります。 シェルが失敗するときはそれ以上先に進まず、固まってしまいます。(waitpidのせいだと思いますが。) 成功する場合のログ --------------- ch_pid = 12885 ch_pid = 0 execl(shell) : --------------- 失敗する場合のログ --------------- ch_pid = 12885 : --------------- forkに失敗していたら、"fail to fork"と表示されると思うので forkには失敗していないと思うのですが・・・。 なぜ、execlは実行されないのでしょうか。

  • VisualStudio.netでmemcmp関数が使えない?

    以前VC++6.0で作ったプログラムをVisualStudio.net_pro_ver2003でコンパイルしようと思っています。 VC++の空プロジェクトを作り、既存項目の追加で以前作成したソースファイルを挿入し、 それをコンパイルしました。 すると、初めにmemcmp関数が「'/clr'オプションを持つCコンパイラで完全なプロトタイプ関数が必要です」と表示され、 memcmpのある全ての行に対し、「関数へのポインタを通して実行される呼び出しに対する引数が多過ぎます」いうエラーが出てしまいます。 strings.hもインクルードしておりますし、VC++では問題なくコンパイルが通っていたので原因が良く分かりません。 そもそもVC時代から良く分からずに使っていたので基本が出来ていないようですが、 宜しく御願い致します。

  • Solaris10でのPOSIX関数の使用方法は?

    お世話になります。 Solaris10(SPARC)にてSunStudio11を導入しています。 この環境下において、POSIX共有メモリ関数(shm_open)を使用したプログラムのコンパイルをしたいのですが、コンパイル時に暗黙の型宣言の警告メッセージとなってしまいます。プリプロセッサによるヘッダファイルの処理結果を見ると、shm_openの型宣言が読み込まれていないようです。(manページで指定されていたヘッダファイルは、インクルード済み) どのような点に問題があるのでしょうか?お気づきの方、ご意見ください。

  • 別ファイルで定義した関数を使用するwindows

    「C言語によるプログラミング 応用編 第2版」という参考書でCの勉強をしています。 この本は、unix と windows 両方のコンパイラを対象に解説していますが、 私は今 VC++ 2005 に付与される cl.exe と link.exe で勉強を進めています。 ( os:WindowsXP home ) 下記の(1)のような関数のみを定義したソース内の "snapshot関数"を、 下記の(3)のような他のmain関数を持った実行コードから使用したい場合 コンパイル・リンクのケースで、どんな手順でコンパイル・リンクすればよいのでしょう? (1) 関数のみを定義した"snapshot.c" #include <stdio.h> ... 省略 ... /* エラーmessage , ワーニングmessage , ノーマルmessage を選んで出力する関数 */ int snapshot( int type , char *fmt, ... ) { ... 省略 ... } (2) 上の関数定義ファイルのヘッダファイル"snapshot.h" extern int snapshot( int type , char *fmt, ... ); #define NORMAL 0 #define WARNING 1 #define ERROR 2 (3) 上のsanpshot関数を使用する"use_snapshot.c" #include <stdio.h> #include "snapshot.h" /* これで snapshot関数を使用できる */ int main( void ) { int i = 10; snapshot( NORMAL, "normal message. %d\n", i ); snapshot( WARNING, "warning message. %d\n", ++i ); snapshot( ERROR, "error message. %d\n", ++i ); return 0; } 私が、まず(1)の"snapshot.c"のみをコンパイル >cl /c sanpshot.c した後、 "snapshot.obj"をリンクしたときのエラーは 添付画像"err_link_snapshot.obj.JPG" です。 この意味もよく分からないのですが、 次に、"use_snapshot.obj" と "snapshot.obj" をまとめてリンクしようとした時のエラーは、下記です。 >link use_snapshot.obj snapshot.obj snapshot.obj : error LNK2019: 未解決の外部シンボル _vspritf が関数 _snapshot で 参照されました。 use_snapshot.exe : fatal error LNK1120: 外部参照 1 が未解決です。 初歩的な問題かと思いますが、どなたかこの解決法を ご教示いただけないでしょうか? 参考サイトなども教えていただけると有難いと思います。 よろしくお願いします。

  • Borland C++ Compiler 5.5でland関数がコンパイルできません

    初歩的な質問ですみません。C言語のプログラミングの質問です。 タイトルどおり、Borland C++ Compiler 5.5でland関数がコンパイルできません。OSはWindows XPで、「c言語を始めよう!」を使ってプログラムを作っています。 今まで学校でunixを使っていたので、その時は何の設定もせずに使えたので普通に使ったのですが、”プロトタイプ宣言のない関数 'rand' の呼び出し”や”プロトタイプ宣言のない関数 'srand' の呼び出し”というエラーが出ます。 timeを使うために#include <time.h>が必要だったり、そのようなunixでは不必要だった下準備が必要なのでしょうか?

  • 標準ヘッダファイルの中身は何に依存?

    stdio.h等の標準ヘッダファイルについて質問です。 HP-UX11.00でコンパイルが通っていたプログラムをHP-UX11.11に移植しようとしているのですが、うまくコンパイルが通りません。 stdio.hを取り込んだ辺りですでにエラーが出ているようなのでHP-UX11.00上のstdio.hをプログラムと同じ階層にコピーして、プログラム内でincludeする際に、静的にコピーしてきたファイルを指定しました。 これでコンパイルをするとエラーが無くなり、動作確認をしてみるとうまく動いているようなのですが、標準ヘッダファイルは、このように違うバージョンのOS上からコピーしてきて使っても平気なのでしょうか? 標準ヘッダファイルの中身は何に依存しているか教えてください。

  • math.hに含まれる関数が使えない

    math.hヘッダーをインクルードして、sqrt()やcos()の関数を使おうとすると、関数sqrt()は定義されていませんとエラーが出て正常にコンパイルできません。 他のヘッダー(stdio.hやstring.hやstdlib.h)の関数は正常に使えてますので、パスの設定は問題ないと思うのですが…… 解決方法はあるのでしょうか?宜しくお願いします。