Solarisプログラミング教えてチョンマゲ

0001帰宅部高校1年
垢版 |
NGNG
一ヶ月前、父親に「パソコン買って」とねだったら[Ultra10]と書かれたマシンをくれました。
わくわくして起動してみるとなんか友達の持ってるヤツと全然違う・・・
っていうかキーボードとマウスもよく見るとなんかおかしい。

親にネットにつないでもらって調べてみるとUltra10というのは
サン・マイクロシステムズというメーカーが出しているワークステーションで
Solarisというシステム(UNIX?)が動いているようです。
父親にこのワークステーションで何ができるのか聞いてみると、
「ホ→ムペ→ジもメールも見られるぞ」「派手なゲームはできない」
「どうせ暇なんだからプログラムでも勉強してみろ」
とつれない答えが・・・

まあ冬休みで暇だからプログラミングを勉強でもしてみるか、と
ネットで勉強しながらifとかwhileとか構造体とかポインタとか覚えました。
しかしこれを使って具体的に何ができるのか・・・?
ネットで見られる情報には↑とかの基本的な使い方しか書かれて無い模様。
ここからステップアップしたいのですがどうすればいいんでしょうか?

友達にも知ってる人はいないし、
本屋で立ち読みしてもネットで得られるものと同じような基本的な部分にしか触れていません。

2ch閉鎖騒動の動画をみてUNIX板の存在を知り
ここならすごいプログラマーの人がいると思い質問させていただきました。

お願いします。
0090a
垢版 |
NGNG
>>88
人によって好みも価値観も違いますからね。
「〜の上」と根拠も示さずに書くのはただの
煽りと変わりませんよ。
0092何が何でも Solaris IA版存続を願う会2ch支部長
垢版 |
NGNG
まぁ>>91で挙げたSolarisの強みというのは,Linuxの強みに比べると
一般のエンドユーザには直接的には実感しにくいところではあるかな.

でも,Apache2の正式リリースにより,multithreadingについては
再評価されるのではないかな,と思っていたりする.
0093名無しさん@お腹いっぱい。
垢版 |
NGNG
>>92
そうそう、
>>88 はただの煽りだろーけど、
一般エンドユーザー代表意見としては
結構的を得ているかも。

SMP/multithread/CSI i18n は FreeBSD/NetBSD あたりでわりと頑張ってる人が
いるみたいなので、個人的には *BSD に期待。

solaris/ia も存続希望〜。でも sun にとってはあんまりウマ味ないかもなあ。
0094名無しさん@お腹いっぱい。
垢版 |
NGNG
プププ、ここは化石にしがみつく馬鹿が集まるスレですかぁ?

Linuxの方がすべてにおいて上なんだけどねぇ・・・

それにきずかないSun信者ってかわいそうだね(w
0100名無しさん@お腹いっぱい。
垢版 |
NGNG
♪〜
アイマン・イヌチュー
ヨーアン・イヌチュー
ウィーアー・イヌチュー…
ブラザーズ!
♪〜

(皆さんご一緒に…)
(1行4拍でラップ風に)
0106名無しさん@お腹いっぱい。
垢版 |
NGNG
犬厨は1つの側面で総て語ろうとするから怖いね。
Winも歴史的経緯抜きで考えるといい面もあるけど、もちろんな如く総て否定して煽りいれてそうだね。
。。。だれもLINUXバカにしてないのに
思想的なバカはどこいってもバカなのは確かだす
0108名無しさん@お腹いっぱい。
垢版 |
NGNG
Solarisプログラミングを初心者が
学べるご本はありますか?
教えてください。
0109
垢版 |
NGNG
>>108
この辺から選んでみれば?
ttp://www.gihyo.co.jp/books/series.php/hyopro

取敢ず、プログラム組んで動かすのもいいかも。
機種依存(SPARC/IA,*Linux,*BSD)の問題はその後だね。
0111ZZ突風
垢版 |
NGNG
>>88
こういう人って 時々いるよね…
「何が楽しくて」って、
何も判らないなりに父親に与えられた物を使ってみてるんでしょうが。

>>89
Linuxウンヌンはともかく、「バカ」には同意。

0112_
垢版 |
NGNG
俺はデモのコードを読んで勉強したぞ。がんがれ>>1
0119名無しさん@お腹いっぱい。
垢版 |
NGNG
キタ━━━━━━(   )(゚  )(∀゚ )(゚∀゚)( ゚∀)(  ゚)(   )━━━━━━ !!!!!

【Solarisデバイスドライバ本】発売記念あげ
ttp://www.oreilly.co.jp/BOOK/solaris/
これで、やっとsolarisでデバドラ書けるぜ!!!!!!!!!!!!!!!!
うれぴい
0122119
垢版 |
NGNG
>>121
もう、自分は書きまくるよ。
1週間に1つの割合でデバイスドライバ書くぜ!
1月に4つで、1年に12ファイルの勢いです。
まずはUSBのデバドラとか書こうかな。
0125119
垢版 |
NGNG
>>123,>>124
いや、違います。
tarでアーカイブしてあるんです。(1つのtarファイルに4つのデバドラ)w
0126名無しさん@お腹いっぱい。
垢版 |
NGNG
保守あげ
0127名無しさん@お腹いっぱい。
垢版 |
NGNG
Solaris(x86/SPARC共に)のXawの、asciiTextWidgetでは
XIMを使った日本語入力はできんのだろうか?
Linuxで上手く動いたコードを元に試行錯誤を繰り返してるが、
XtVaCreateManagedWidget実行後、標準エラー出力に

Warning: we can not open any input method

と出て、さっぱりIMが使えない...
0128名無しさん@お腹いっぱい。
垢版 |
NGNG
学校の授業でいきなりUNIXやらされてます・・・。
もう、頭がウニです。ウニックスです(TT
お礼するから代わりにレポートやってくれる人がいたらどんなに楽なことか・・・

と、言ってみるテスト。
0130 
垢版 |
NGNG
>>128
今時、いきなりUNIXやらしてくれるんんて、いー学校だな。
まぁせいぜいがんばれよ。
やってほしけりゃさりげなく課題はっときなよ。
0132128
垢版 |
NGNG
しかもアップしてみたけどアクセスできなかった・・・。
WINも満足に使えないようでは・・・
0133名無しさん@お腹いっぱい。
垢版 |
NGNG
もっと楽しくやれば簡単に覚えられるよ。
0135名無しさん@お腹いっぱい。
垢版 |
NGNG
>>128の"お礼"に期待あげ
0137名無しさん@お腹いっぱい。
垢版 |
NGNG
>>128
【問題1】
1) 標準入力から読み込んだストリームで、
第1行目以降のプリプロセッサ処理行を表示するプログラム
2) 1.getcharで標準入力から1文字読み込み
2.前の文字が改行でないなら次の行を読み込み
3.前の文字が改行の場合、現在取得文字が'#'の時にstatusフラグに1を立てて
4.次行でstatusフラグが1の場合、標準出力に1文字出力する。
5.以上をストリームの終わり(EOF)まで繰り返す。
0139137
垢版 |
NGNG
>>137
【訂正】
 2.前の文字が改行でないなら次の行を読み込み
         ↓
 2.前の文字が改行でないなら次の文字を読み込み
                 ^^
0140
垢版 |
NGNG
なんだかソフトウェア作法とか勉強したらすぐにできそうだな。
0141名無しさん@お腹いっぱい。
垢版 |
NGNG
アホみたいな質問なんですが、
OS起動時に「/」がグルグル回るようなプログラムはどうやって組めばいいんでしょう?
0144名無しさん@お腹いっぱい。
垢版 |
NGNG
>>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
ってすると"\"のとこだけは表示されないね。
\がコントロールコードの字句解析を打ち消すのがネックか?
0145名無しさん@お腹いっぱい。
垢版 |
NGNG
確かCR(13、行頭に戻る)を使ってる。こんな感じ?

#!!/bin/sh
while :
do
  for c in - / \| \\
  do
    /usr/5bin/echo "$c" "\r\c"
    sleep 1
  done
done
0146名無しさん@お腹いっぱい。
垢版 |
NGNG
>>137
どういう動作をさせたいのかよくわからんね。
なんとなく、「先頭行以外の行頭#の次の行からstdinをstdoutにコピー」になってる気がするのだが…
0147 
垢版 |
NGNG
5bin/echo を使うのがキモだね。
0148名無しさん@お腹いっぱい。
垢版 |
NGNG
なんつーか、トラブル気味なので、教えてください。
とりあえず、問題はここまで絞り込んだんだけど、
ここからがぜんぜんわかりません。
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プログラムに詳しい方、ぜひぜひ教えてください。
よろしくお願いします。
0150名無しさん@お腹いっぱい。
垢版 |
NGNG
>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だとうまく
 いかない理由がわからない。なんでだろう???
0151 
垢版 |
NGNG
sizeof(A)の値はどーなってるの?
0153名無しさん@お腹いっぱい。
垢版 |
NGNG
まさか stdlib.h を include してないってオチはないよな?
0155名無しさん@お腹いっぱい。
垢版 |
NGNG
>>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;
}
0158157
垢版 |
NGNG
下のソースでコンパイルも実行も問題なかった

/*
 * 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;
}
0159155
垢版 |
NGNG
>>156
>K&R本がどうこう言う前に>>150をよく見ては?
は?
言ってる意味がわかんねーよ。
155のソースでは駄目ってこと?
>>158は、155のソースにincludeつけただけじゃん。
要するに
struct {
inta;
shortb;
}A;
は、
typedef struct {
int a;
short b;
}A;
だろ。
0160名無しさん@お腹いっぱい。
垢版 |
NGNG
1 stdlib.hをincludeし忘れ
2 mallocの戻り値が32bit整数と見なされ
3 64bitポインタの上位(下位?)32bitがpaに格納され
4 あぼーんされ
0162155
垢版 |
NGNG
>>160
それ以前に>>150のソースをそのまま
コンパイルすると警告が続出なんですけど。
0163155
垢版 |
NGNG
>>161
なるほど、そういうことですか。
0165名無しさん@お腹いっぱい。
垢版 |
NGNG
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点になります。
厨な質問かとは思いますがご教授お願いいたします。
0166 
垢版 |
NGNG
てか○数字使ってる時点であぼーん。
0168名無しさん@お腹いっぱい。
垢版 |
NGNG
>>1
>わくわくして起動してみるとなんか友達の持ってるヤツと全然違う・・・
>っていうかキーボードとマウスもよく見るとなんかおかしい。
いつも自分が慣れたブツ以外は「おかしい」「違う」といって種類の多様性を
容認しようとしないMS中心のグローバルスタンダード的な考えは
(あえていえば自分がそのような事を考えたことが無いにしても
排斥的思考を恐らくは無意識のうちに行なっているという事は)
差別や偏見にもつながりかねない重大な問題だと思うんですが、どうでせう?
0171名無しさん@お腹いっぱい。
垢版 |
NGNG
つーか「パチョコン」といいながら「ワークステーション」といってるところで
ネタ確定。
あとSPARCウザーから言わせればultra5/10はパチョコン同等。
ブリッジの下に何でもぶら下がってるのは安物。バスがスイッチなUltra60ハァハァ
0174名無しさん@お腹いっぱい。
垢版 |
NGNG
天×
×罰
0175697
垢版 |
NGNG
100%ネタ
こんな陰険な父親いたらヤダなぁ〜(爆)
0176名無しさん@お腹いっぱい。
垢版 |
NGNG
>>175
そうかなー、俺はこの親父かっこえーと思うけどね。
もっとも、親父も本人が工学方面の興味をもってるから与えたんだろ。
正直言って、パソコンなんて5万程度で買えるんだからバイト代で買えるし、
ある意味、ワークステーションなんて親父が買わなければ、最初のうちは
出会えない代物だから、親父の判断は正しいと思うよ。
0177名無しさん@お腹いっぱい。
垢版 |
NGNG
デモ実際にいそうじゃあない?
大学の教授とかでさー。
学校の放出品もらってきたりとか…。
漏れは先日大学からもらってきたぞい。
0178名無しさん@お腹いっぱい。
垢版 |
NGNG
age
0179名無しさん@お腹いっぱい。
垢版 |
NGNG
ども。
Solaris8+SunONE7 で ローカル時間にmsec(ミリ秒)を使いたい。
localtime構造体には、msecがなく、困ってます。
何か他のmsecのある構造体を教えてください。
また、time構造体から上の構造体への変換関数もお願いします。

#プログラム板の方にも書き込みしちゃったけど、その後、ここ見つけたんで、
#書き込ませてください。
0180名無しさん@お腹いっぱい。
垢版 |
NGNG
time構造体なの? time_tとかstruct tmではなくて?

gettimeofday(3C)で使うstruct timevalは
マイクロ秒単位のメンバを持ってるよ。
6〜10msec程度の精度はあると思う。

ただし、gettimeofday(3C)で得られるのはUTC時間なので
タイムゾーン処理は自分でやる必要あり。
0181179
垢版 |
NGNG
>180
 レスありがとう。

 すいません、timeじゃなくてもいいです。
 time_t,struct tm,hrestime,など。
 標準的な関数かシステムコールで、時間を取ってこれて、それを
 ローカル時間に変換できる関数があればいいです。

 UTC時間だとそっから自分で変換するのに、処理にかかる時間が
 問題になるかもしれないので。
 できればローカル時間へ一発で変換したいところ。
0182名無しさん@お腹いっぱい。
垢版 |
NGNG
> 標準的な関数かシステムコールで、時間を取ってこれて、それを
> ローカル時間に変換できる関数があればいいです。

「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)。
0184179
垢版 |
NGNG
>182

 返事ありがとう。
 まさしく求めていたもの、そのものって感じです。
 ありがとうございました。
 
0185名無しさん@お腹いっぱい。
垢版 |
NGNG
Solaris8のSun ONE7 でディレクトリの存在チェックをするには
どうしたらいいでしょうか?
opendirを使おうと思ったんだけど、DIR *が大きさ不定?な
構造体らしく、どうしたらいいかわかりません。

簡単にディレクトリの存在(ある、なし)をチェックするには
どうしたらいいか、教えてください。
exec(ls)のようでないものをお願いします。

0186名無しさん@お腹いっぱい。
垢版 |
NGNG
>>185 stat(2)は使えないのか?
0188名無しさん@お腹いっぱい。
垢版 |
NGNG
Solaris8ってlibpthread.a無いんですか?
Linuxだとちゃんとあって、スタティックリンクできるんですが。
0189名無しさん@お腹いっぱい。
垢版 |
NGNG
Solaris の場合、スタティックリンクできない。
これは pthread 回りでシステムコールインターフェースの変更が
あっても、libpthread.so でその変更を吸収するためなので、
我慢しる。
レスを投稿する


ニューススポーツなんでも実況