Solarisプログラミング教えてチョンマゲ
一ヶ月前、父親に「パソコン買って」とねだったら[Ultra10]と書かれたマシンをくれました。 わくわくして起動してみるとなんか友達の持ってるヤツと全然違う・・・ っていうかキーボードとマウスもよく見るとなんかおかしい。 親にネットにつないでもらって調べてみるとUltra10というのは サン・マイクロシステムズというメーカーが出しているワークステーションで Solarisというシステム(UNIX?)が動いているようです。 父親にこのワークステーションで何ができるのか聞いてみると、 「ホ→ムペ→ジもメールも見られるぞ」「派手なゲームはできない」 「どうせ暇なんだからプログラムでも勉強してみろ」 とつれない答えが・・・ まあ冬休みで暇だからプログラミングを勉強でもしてみるか、と ネットで勉強しながらifとかwhileとか構造体とかポインタとか覚えました。 しかしこれを使って具体的に何ができるのか・・・? ネットで見られる情報には↑とかの基本的な使い方しか書かれて無い模様。 ここからステップアップしたいのですがどうすればいいんでしょうか? 友達にも知ってる人はいないし、 本屋で立ち読みしてもネットで得られるものと同じような基本的な部分にしか触れていません。 2ch閉鎖騒動の動画をみてUNIX板の存在を知り ここならすごいプログラマーの人がいると思い質問させていただきました。 お願いします。
>>88 人によって好みも価値観も違いますからね。 「〜の上」と根拠も示さずに書くのはただの 煽りと変わりませんよ。 デバイスドライバやプリインストールアプリの豊富さ等ではLinuxの方が上でしょうな. SMP/multithreading/CSIに基づいたI18NなんかではSolarisに軍配が上がるでしょう. まぁ>>91 で挙げたSolarisの強みというのは,Linuxの強みに比べると 一般のエンドユーザには直接的には実感しにくいところではあるかな. でも,Apache2の正式リリースにより,multithreadingについては 再評価されるのではないかな,と思っていたりする. >>92 そうそう、 >>88 はただの煽りだろーけど、 一般エンドユーザー代表意見としては 結構的を得ているかも。 SMP/multithread/CSI i18n は FreeBSD/NetBSD あたりでわりと頑張ってる人が いるみたいなので、個人的には *BSD に期待。 solaris/ia も存続希望〜。でも sun にとってはあんまりウマ味ないかもなあ。 プププ、ここは化石にしがみつく馬鹿が集まるスレですかぁ? Linuxの方がすべてにおいて上なんだけどねぇ・・・ それにきずかないSun信者ってかわいそうだね(w 今はUltra10に Linux入れてます。 やっぱ、メジャーな方が何かと都合がいいですね。 ♪〜 アイマン・イヌチュー ヨーアン・イヌチュー ウィーアー・イヌチュー… ブラザーズ! ♪〜 (皆さんご一緒に…) (1行4拍でラップ風に) >>100 これ、もーらい。 今度の学祭バンドの余興で Solaris同好会の隣で嫌がらせ演奏してやろう(w 犬厨は1つの側面で総て語ろうとするから怖いね。 Winも歴史的経緯抜きで考えるといい面もあるけど、もちろんな如く総て否定して煽りいれてそうだね。 。。。だれもLINUXバカにしてないのに 思想的なバカはどこいってもバカなのは確かだす Solarisプログラミングを初心者が 学べるご本はありますか? 教えてください。 >>108 この辺から選んでみれば? ttp://www.gihyo.co.jp/books/series.php/hyopro 取敢ず、プログラム組んで動かすのもいいかも。 機種依存(SPARC/IA,*Linux,*BSD)の問題はその後だね。 >>88 こういう人って 時々いるよね… 「何が楽しくて」って、 何も判らないなりに父親に与えられた物を使ってみてるんでしょうが。 >>89 Linuxウンヌンはともかく、「バカ」には同意。 俺はデモのコードを読んで勉強したぞ。がんがれ>>1 キタ━━━━━━( )(゚ )(∀゚ )(゚∀゚)( ゚∀)( ゚)( )━━━━━━ !!!!! 【Solarisデバイスドライバ本】発売記念あげ ttp://www.oreilly.co.jp/BOOK/solaris/ これで、やっとsolarisでデバドラ書けるぜ!!!!!!!!!!!!!!!! うれぴい >>121 もう、自分は書きまくるよ。 1週間に1つの割合でデバイスドライバ書くぜ! 1月に4つで、1年に12ファイルの勢いです。 まずはUSBのデバドラとか書こうかな。 >>123 ,>>124 いや、違います。 tarでアーカイブしてあるんです。(1つのtarファイルに4つのデバドラ)w Solaris(x86/SPARC共に)のXawの、asciiTextWidgetでは XIMを使った日本語入力はできんのだろうか? Linuxで上手く動いたコードを元に試行錯誤を繰り返してるが、 XtVaCreateManagedWidget実行後、標準エラー出力に Warning: we can not open any input method と出て、さっぱりIMが使えない... 学校の授業でいきなりUNIXやらされてます・・・。 もう、頭がウニです。ウニックスです(TT お礼するから代わりにレポートやってくれる人がいたらどんなに楽なことか・・・ と、言ってみるテスト。 >>128 今時、いきなりUNIXやらしてくれるんんて、いー学校だな。 まぁせいぜいがんばれよ。 やってほしけりゃさりげなく課題はっときなよ。 しかもアップしてみたけどアクセスできなかった・・・。 WINも満足に使えないようでは・・・ >>128 早くうpしてよ。 寝ないで待ってるんだから。 >>128 wordファイルでなくて、textファイルにしてよ。 >>128 【問題1】 1) 標準入力から読み込んだストリームで、 第1行目以降のプリプロセッサ処理行を表示するプログラム 2) 1.getcharで標準入力から1文字読み込み 2.前の文字が改行でないなら次の行を読み込み 3.前の文字が改行の場合、現在取得文字が'#'の時にstatusフラグに1を立てて 4.次行でstatusフラグが1の場合、標準出力に1文字出力する。 5.以上をストリームの終わり(EOF)まで繰り返す。 >>128 【問題2】 めんどいので端折るが、shellの勉強をすればすぐできる。 >>137 【訂正】 2.前の文字が改行でないなら次の行を読み込み ↓ 2.前の文字が改行でないなら次の文字を読み込み ^^ なんだかソフトウェア作法とか勉強したらすぐにできそうだな。 アホみたいな質問なんですが、 OS起動時に「/」がグルグル回るようなプログラムはどうやって組めばいいんでしょう? echo -n "-^H\^H|^H/^H-^H" >>143 # echo -n "-^H\^H|^H/^H-^H" -n -^H\^H|^H/^H-^H こうなるが csh% foreach n ( - / | \ - );printf $n"\c";sleep 1;printf "\b\c";end ってすると"\"のとこだけは表示されないね。 \がコントロールコードの字句解析を打ち消すのがネックか? 確かCR(13、行頭に戻る)を使ってる。こんな感じ? #!!/bin/sh while : do for c in - / \| \\ do /usr/5bin/echo "$c" "\r\c" sleep 1 done done >>137 どういう動作をさせたいのかよくわからんね。 なんとなく、「先頭行以外の行頭#の次の行からstdinをstdoutにコピー」になってる気がするのだが… なんつーか、トラブル気味なので、教えてください。 とりあえず、問題はここまで絞り込んだんだけど、 ここからがぜんぜんわかりません。 Sun.docs.comにこういう話ってでてないよね? Solaris9(64bit)で以下のコードのプログラムを動かしたとき、 必ずsegmentation faultがおこる。 struct { inta; shortb; }A; typedef A *PA; int main(){ PApa; intnum=3; pa = (PA)malloc(sizeof(PA)*num); pa[0].a = 1;//ここでsegmentation fault return 0; } このとき、ILP32ではうまくいくが、LP64(xarch=v9)ではうまくいかない。 mallocが問題だと思うんだけど、どう問題なのかがよくわからない。 Solaris9の64bitプログラムに詳しい方、ぜひぜひ教えてください。 よろしくお願いします。 ポインタの配列しか確保してねーじゃん。K&R本から(以下小言 >148 ぐは。間違えてる。 正しいのはこっち。 > struct { > int a; > short b; > }A; > typedef A *PA; > int main(){ > PA pa; > int num = 3; > > pa = (PA)malloc(sizeof(A)*num); > pa[0].a = 1;//ここでsegmentation fault > return 0; > } ちゃんと構造体の大きさを個数分確保してるんだけど、 うまくいかない。32bitだとうまくいって、64bitだとうまく いかない理由がわからない。なんでだろう??? 構造体の列をそうやって一括でmallocするのが諸刃の剣だっ ツーことは分かっているヨナ? まさか stdlib.h を include してないってオチはないよな? >>152 一括でmallocして何の問題があるつうのよ おまえ諸刃の剣って言ってみたかっただけだろ >>148 こうすればいいんだろ。 32bit、64bitどうこう言う前にK&R本が必要では? typedef struct { int a; short b; }A; typedef A *PA; int main(){ PA pa; int num = 3; pa = (PA)malloc(sizeof(A)*num); pa[0].a = 1; //ここでsegmentation fault return 0; } >>155 K&R本がどうこう言う前に>>150 をよく見ては? >>150 たぶんコンパイルオプションがおかしいんじゃない? ちゃんと64bitライブラリをリンクしてる? 下のソースでコンパイルも実行も問題なかった /* * c -xarch=v9 -o aaa aaa.c */ #include <stdlib.h> typedef struct { int a; short b; } A; typedef A * PA; int main(){ PA pa; int num = 3; pa = (PA)malloc(sizeof(A)*num); pa[0].a = 1; } >>156 >K&R本がどうこう言う前に>>150 をよく見ては? は? 言ってる意味がわかんねーよ。 155のソースでは駄目ってこと? >>158 は、155のソースにincludeつけただけじゃん。 要するに struct { inta; shortb; }A; は、 typedef struct { int a; short b; }A; だろ。 1 stdlib.hをincludeし忘れ 2 mallocの戻り値が32bit整数と見なされ 3 64bitポインタの上位(下位?)32bitがpaに格納され 4 あぼーんされ >>159 typedefが無いとコンパイルエラーになるから、 それは単なるコピペミスだと思う >>160 それ以前に>>150 のソースをそのまま コンパイルすると警告が続出なんですけど。 iconv()に関して質問させてください。 static int KONBU(char *to_code, char *from_code, const char **inp, char **outp, size_t *inl, size_t *outl) { iconv_t icv_hook; size_t ret_val; icv_hook = iconv_open(to_code, from_code); if(icv_hook == (iconv_t)-1)return(ANS_ERR);// NG Return ret_val = iconv(icv_hook, inp, inl, outp, outl); iconv_close(icv_hook); if(ret_val == (size_t)-1){ if(errno == EILSEQ) printf("EILSEQ\n"); else if (errno == E2BIG) printf("E2BIG\n"); else if (errno == EINVAL) printf("EINVAL\n"); return(ANS_ERR);// NG Return } return(ANS_OK);// OK Return } 上記のようなiconv()を用いた関数があります。 unsinged char *sb, db; ret = KONBU("JIS7", "PCK",(const char **)&sb,(char **)&db,2,8); そしてこのように呼び出しており、unchar sbには 83 31 83 32 83 34 ....といったようなデータを渡しています。 実行結果はEINVALが返ってきます。 ここで質問なのですが @第5引数の2はsbを2バイトずつ読み込むということでよろしいのでしょうか? A第6引数の8は何を指すのでしょうか? Bsbには0x81 0x31 ....というようにヘキサを読み込ませているつもりなのですが そもそも文字列で渡すべきなのでしょうか? CEINVALのエラーの意味がよくわからない。 以上4点になります。 厨な質問かとは思いますがご教授お願いいたします。 >>1 >わくわくして起動してみるとなんか友達の持ってるヤツと全然違う・・・ >っていうかキーボードとマウスもよく見るとなんかおかしい。 いつも自分が慣れたブツ以外は「おかしい」「違う」といって種類の多様性を 容認しようとしないMS中心のグローバルスタンダード的な考えは (あえていえば自分がそのような事を考えたことが無いにしても 排斥的思考を恐らくは無意識のうちに行なっているという事は) 差別や偏見にもつながりかねない重大な問題だと思うんですが、どうでせう? いやむしろ多様性を受け入れようとした結果がこの惨状なのでは? >>168 つまり>>168 が>>1 を偏見的な目で見ているから そういう解釈になるのですね? ということが言いたいわけですね。 つーか「パチョコン」といいながら「ワークステーション」といってるところで ネタ確定。 あとSPARCウザーから言わせればultra5/10はパチョコン同等。 ブリッジの下に何でもぶら下がってるのは安物。バスがスイッチなUltra60ハァハァ >>171 UPAバスの有無のことだろうけど、1cpuや2cpu程度なら あんまし意味ないっしょ 100%ネタ こんな陰険な父親いたらヤダなぁ〜(爆) >>175 そうかなー、俺はこの親父かっこえーと思うけどね。 もっとも、親父も本人が工学方面の興味をもってるから与えたんだろ。 正直言って、パソコンなんて5万程度で買えるんだからバイト代で買えるし、 ある意味、ワークステーションなんて親父が買わなければ、最初のうちは 出会えない代物だから、親父の判断は正しいと思うよ。 デモ実際にいそうじゃあない? 大学の教授とかでさー。 学校の放出品もらってきたりとか…。 漏れは先日大学からもらってきたぞい。 ども。 Solaris8+SunONE7 で ローカル時間にmsec(ミリ秒)を使いたい。 localtime構造体には、msecがなく、困ってます。 何か他のmsecのある構造体を教えてください。 また、time構造体から上の構造体への変換関数もお願いします。 #プログラム板の方にも書き込みしちゃったけど、その後、ここ見つけたんで、 #書き込ませてください。 time構造体なの? time_tとかstruct tmではなくて? gettimeofday(3C)で使うstruct timevalは マイクロ秒単位のメンバを持ってるよ。 6〜10msec程度の精度はあると思う。 ただし、gettimeofday(3C)で得られるのはUTC時間なので タイムゾーン処理は自分でやる必要あり。 >180 レスありがとう。 すいません、timeじゃなくてもいいです。 time_t,struct tm,hrestime,など。 標準的な関数かシステムコールで、時間を取ってこれて、それを ローカル時間に変換できる関数があればいいです。 UTC時間だとそっから自分で変換するのに、処理にかかる時間が 問題になるかもしれないので。 できればローカル時間へ一発で変換したいところ。 > 標準的な関数かシステムコールで、時間を取ってこれて、それを > ローカル時間に変換できる関数があればいいです。 「localtime構造体」ってのはstruct tmのことでいいんだよね? 少なくとも2038年までなら、struct timevalのtv_secをtime_tに変換すれば localtime関数が使えるでしょ。 struct timeval tv; time_t t; struct tm *tm; gettimeofday(&tv, NULL); t = tv.tv_sec; tm = localtime(&t); printf("%02d:%02d:%02d.%03d\n", tm->tm_hour, tm->tm_min, tm->tm_sec, tv.tv_usec / 1000); > 6〜10msec程度の精度はあると思う。 訂正。実測したら20usecくらいの精度はあるみたい(@Blade 100)。 >182 返事ありがとう。 まさしく求めていたもの、そのものって感じです。 ありがとうございました。 Solaris8のSun ONE7 でディレクトリの存在チェックをするには どうしたらいいでしょうか? opendirを使おうと思ったんだけど、DIR *が大きさ不定?な 構造体らしく、どうしたらいいかわかりません。 簡単にディレクトリの存在(ある、なし)をチェックするには どうしたらいいか、教えてください。 exec(ls)のようでないものをお願いします。 Solaris8ってlibpthread.a無いんですか? Linuxだとちゃんとあって、スタティックリンクできるんですが。 Solaris の場合、スタティックリンクできない。 これは pthread 回りでシステムコールインターフェースの変更が あっても、libpthread.so でその変更を吸収するためなので、 我慢しる。 read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる