OpenWatcom で DOS のプログラムを作成する
ちょっと DOS のバッチファイルの中で、ランダムな時間スリープする必要があり、OpenWatcom で作ってみました。
以下のようなプログラムです。
/* rand_s.c*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main(int argc, char *argv[]) {
int seed, max, s;
char *p;
seed = time(NULL);
max = 30;
if( argc == 2 || argc == 3) {
p = argv[argc - 1];
while( p && *p ) seed += *p++;
if( argc == 3 )
max = atoi(argv[1]);
}
srand(seed);
s = rand() % max;
printf("sleep %d sec\n", s);
sleep(s);
return 0;
}
現在時刻と引数で指定した文字列を種に乱数 (0~29) を発生させ、その時間だけ sleep するプログラムです。
OpenWatcom 用の環境変数 (PATH, WATCOM, INCLUDE) を設定して以下のようにコンパイルします。
$ wcl -q rand_s.c -bcl=dos
ここで生成される実行形式は、DOS の 16 bit 形式です。64 bit の Windows OS では実行できません。32 bit の Windows10 で実行したところ、NTVDM を追加する必要がありました。
また、ここで生成した実行形式は、実行中にコマンドプロンプトが英語モードになりました。
とりあえず、目的としたことは実現できたので、問題はありません。
Raspberry Pi(ARM) なので OpenWatcom を使いましたが、x86 なマシンであれば、Microsoft が無償で公開している Visual Studio Community を使ったほうが良いと思います。
ディスカッション
コメント一覧
まだ、コメントがありません