Solarisプログラミング教えてチョンマゲ
>>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 でその変更を吸収するためなので、 我慢しる。 処理時間が一定時間を越えた場合には、強制終了するように、スレッドとシグナルを使って、 以下のようなプログラムを組んでいます。 しかし、シグナルハンドラを無視(起動しない)もしくはシグナルの無効化ができません。 どうしたらよいでしょうか? ・初期設定 ・スレッドA起動 ( ---> シグナルハンドラ(SIGALRM)設定、インターバルタイマーセット ) ( ---> タイマー待ち ---> 時間が来たらハンドラ起動 ---> ハンドラ(abortで強制終了) ) ・処理B ・処理Bが時間内に終了 ・スレッドA終了処理 ( シグナルハンドラを再設定 ---> インターバルタイマーリセット ) ( スレッドAをキャンセル ) ・処理続行 このとき、シグナルハンドラの再設定し、スレッドAを終了させると、ALARM CLOCKで終了。 スレッドAを終了させて、なおかつ、ハンドラを起動させないようにするためにはどうしたら いいか教えてください。 なんか、Solarisの中味(システムコール?)について、よくわかってないので、変なこと書いてる かもしれませんが、よろしくお願いします。 >>191 そのスレッドAってのは時間監視だけしてるの? それとも処理BってのもスレッドAの仕事? 時間監視だけなら、シグナル使わないでスレッドAをその時間だけ眠らせておけばいいんでない? >>192 > >>191 > そのスレッドAってのは時間監視だけしてるの? それとも処理BってのもスレッドAの仕事? > 時間監視だけなら、シグナル使わないでスレッドAをその時間だけ眠らせておけばいいんでない? そうしておいて、B側で処理が間に合ったらフラグをセットして、スリープから起きてきたA側がそのフラグをチェックすればいいんじゃないのかな? レスありがとう。 >192,193 スリープでもいいかなと思って、暫定的にそのような処理にして、動かしていました。 しかし、他にもいくつかのスレッドが立ち上がっており、タイマー待ちができない状態になりました。 結局、なんとか今日解決したのですが、どのようにしたかというと、以下のような感じです。 (SIGALRMは他のスレッドで使用するため、ほかのシグナル(SIGUSR1)に変更することになりました) スレッドAは時間監視セット処理のみ行う。 処理Bはタイマーによって監視され、一定時間経過したら、ハンドラによって強制的にプロセスごと終了させられる。 ・初期設定 ・スレッドA起動 ( ---> シグナルハンドラ(SIGUSR1)設定、timer_create(TimerID), timer_settime() -----> スレッドA終了) ( 時間が来たらハンドラ起動 ---> ハンドラ(終了処理後、abortで強制終了) ) ・処理B ・処理Bが時間内に終了 ・タイマー削除処理(timer_delete(TimerID)) ・処理続行 以上、こんな感じです。 ありがとうございました。 スレッドとシグナルを併用するってぇいうのが間違いの元 Solaris Systems Programming ttp://www.amazon.com/exec/obidos/tg/detail/-/0201750392/ 翻訳期待の本 Sunblade 100のCPUは、sparc64でつか? 何が64bitかはわからんが、まあ普通は64bit CPUに分類される。 >>200 ありがとうでした。 いや、ちょっと今ビッグエンディアンとリトルエンディアンのテストしたかったので、 x86とSparcを使用して64bit,32bitデータがどうなるか調べたかったのです。 おかげでエンディアン問題に影響しないコードが書けました。m(_ _)m そりゃそうだろ。 大抵のプログラムはエンディアン問題には影響*しない*。 影響*される*ことはままあるがな。 とりあえずあれだ、漏れが適当なWindowsマシン(ライセンス付き)送ってあげるから そのマシンと交換してほしいよ。マジで。 Puttyを使ってsshで接続後、makeとかしてるんですけどセッションが切れてもmakeし続ける方法ってないんですかね? makeに1、2時間かかる間にPuttyやネットワークが落ちてもサーバー側に問題がなければmakeしててほしい。 screen 使ってでたっちするか nohupするか。 なんで、なんでなんで。 おすぎですっ。ぴーこですっ。 ゆーたいりだつっ。 ざ・たっち。 >>204 文字をintで扱うからエンディアン影響するんじゃ? キャストってスペックにだけ影響するの? 一ヶ月前、父親に「パソコン買って」とねだったら[PC8801]と書かれたマシンをくれました。 わくわくして起動してみるとなんか友達の持ってるヤツと全然違う・・・ っていうかキーボードとマウスもよく見るとなんかおかしい。 親にネットにつないでもらって調べてみるとPC8801というのは NECというメーカーが出しているワークステーションで N88BASICというシステム(Microsoft?)が動いているようです。 父親にこのワークステーションで何ができるのか聞いてみると、 「ホ→ムペ→ジもメールも見られるぞ」「派手なゲームはできない」 「どうせ暇なんだからプログラムでも勉強してみろ」 とつれない答えが・・・ まあ冬休みで暇だからプログラミングを勉強でもしてみるか、と ネットで勉強しながらifとかwhileとか構造体とかポインタとか覚えました。 しかしこれを使って具体的に何ができるのか・・・? ネットで見られる情報には↑とかの基本的な使い方しか書かれて無い模様。 ここからステップアップしたいのですがどうすればいいんでしょうか? 友達にも知ってる人はいないし、 本屋で立ち読みしてもネットで得られるものと同じような基本的な部分にしか触れていません。 2ch閉鎖騒動の動画をみてUNIX板の存在を知り ここならすごいプログラマーの人がいると思い質問させていただきました。 お願いします。 PC88でwebもメールもできるんなら、それはたしかにわくわくするなあ。 PC88ってN88Basicしか動かんのじゃないの? DOSの前だよなw おれSRmkU持ってたけど。単なるゲームマシンだったな。なつかぴ。 CPUはZ80(相当)だから、CP/Mもあったらしいよ。 UZIXも動けばおもしろいんだけどね。 おお CP/M ね。 あったなぁ。 俺は日電CP/M持ってたもんね。 あの頃のソフトはほんとバケモノのように良く出来てたよ。 Fortran,PL/I,CPBOL,C つか、ふつー PC-8001 で CP/M だろ? メディアは8インチフロッピーw お父さんのクオリティに感動!! てか絶対WindowsPCより高い金出してるよな 特定のウィンドウ1〜3を指定した順に上位スタックするようにしたく・・・ ※ウィンドウは他にも多数あるという前提で Display *dsp; Window win[3]; int w_num; w_num = 3; wim[0]=123; /* アプリ1のWindowID*/ wim[1]=456; /* アプリ2のWindowID*/ wim[2]=789; /* アプリ3のWindowID*/ /*IDは引数で渡されたものを数値変換したもの、または、*/ /*共有メモリから取得した値。ここの例では省略している*/ dsp = XOpenDisplay(display_name); XRestackWindows(dsp, win, w_num); /*指定した順でウィンドウを再スタック*/ と、したのだがウィンドウがピクリとも動きませんでした。 どこが誤っているのか、なにか処理が足りないのかが判りません。 どなたかお判りになる方は居ませんか? >>221 適当なWindowManagerのソース見てみたら? 自分がオープンしたウィンドウじゃないから うまく動かないんじゃね? WindowManager用に用意されてる関数があったような 気がする。 >>223 サンクス WindowManagerみてみる。 いろいろ試してみたけど CygwinでWindowManagerの介入阻止してやると 動きそうな幹事。 ただ、他のWindowManager上で試すとまったく 動かなかったりする。 よくわからん。 >>224 VictorのMSX2にもデュアルCPUなHC-95ってのがあったぞ。 >>222 あのね、子供がしたことに対して親が責任を取るというのは当然でしょ。 それと全く逆のことを考えればいいのよ。 歴史的な問題の場合、上の世代の過ちに対して、下の世代の人たちが責任を取らなくちゃいけないの。 なるほど、失敗した上の世代を吊るしていいということか nanosleep()命令がコンパイルできません。 何か設定があるんですか? No manual entry for nanosleep さがしもせず「ないからわかりません」とかほざくやつはしねばいいとおもうんだ ttp://www.freebsd.org/cgi/man.cgi >>233 スレタイよめ。 あと、古いSolarisだとnanosleep()は無かったと思うぞ。 さあ早く select()使ってnanosleep()を実装する仕事に戻るんだ、、 select()命令を使ってnanosleep()命令にする(?)って、そんな設定があるんですか? select() のタイムアウトを nanosleep() の代わりに使うという話でしょ。 PASS= に/usr/gnu/binを適応してるのに xmkmfのジョブが実施できません>< ヘルフお願いします setコマンドで本当にそのパスを食ってるか rehashしてみるとかwhich xmkmfしてみるとかさぁ Solaris-7.0 x86 なんですけど、最新版に上げるための手順を教えてください。 C言語を静的リンクするのに、オプションは -staticじゃ駄目なんですか? 何かエラーが出るんですけど >>246 その、コンパイラ(リンカ)により異なるオプションを付けても エラーが出るんですけど エラーメッセージを書かないのは、宗教上の理由からですか? >>245 これ、なぜそうなるか知ってる人ならエラーメッセージ関係なしで答えられるよね Solaris10ではlibc.aが提供されていない。 だったらインストールCDからlibc.aを追加すればいいだけでは? Solaris10で開発した事がない老害か? とっとと引退して判子押しでもやってろ。 >>255 SUNWがたくさんあり過ぎて探すのが大変です。-staticのSUNWを教えて下さい。 >>255 と>>257 は最近の事情を知らない、死に損ないジジイなので無視しましょう。 Solaris10ではライブラリが提供されていないから、スタティックリンクは出来ません。 だから、回答のSUNWだけ教えろよ。能書きは不要。 みんないじわるだなぁ >>245 SUNWarcに入ってるよw >>265 感謝!!!! SUNWを入れたら静的コンパイラできましたぁ!!!! tarファイルの中のファイルを削除したいのですが、solarisにはdeleteオプションが無いようなので、このオプションを使わずに削除するにはどうすればいいのでしょうか? /usr/sfw/binにgnuのtar入ってなかったっけ? 一旦展開してアーカイブ作り直すとか >>269 それは難しいと思います。 パイプで渡せば出来そうな気がするのですが。具体的にどう書けばいいのかわかりません こんなんでいいのか? $ ls test1 test2 test3 $ tar cf - test* |perl -MArchive::Tar -e '$tar=Archive::Tar->new(\*STDIN);$tar->remov\ e("test1");$tar->write(\*STDOUT)' |tar tf - test3 test2 >>272 ありがとうございます。今環境がないので今度客先のaixで確認してみます。 >>272 はじめにAIXのスレで質問して、ついでにシェルスクリプト総合で質問したものですが、 http://hibari.2ch.net/test/read.cgi/unix/1290209379/235-236 でシェルスクリプトを書いてしまいました。 どうも別の人も質問したり、回答したりしているようです。 perlは使ったことがないのですが、便利そうですね。 しかし、会社のAIXにperlはインストールされているのだろうか… awkとかsedを使っている人はいるんですけどね。 汎用性はawkとかの方が高い気がしますが、perlの方が高機能なんですかね。 ちなみに268,271,273は私ではありません。 スレチですがAIXで動かすのが目的です。 自宅にはCent OSとFree BSDの環境があり、Cent OSでdeleteオプションが使えることは確認しました。 せっかくシェルスクリプトを書いたので、当面はそれを使うつもりですが、 Cent OSでperlは使えると思うので、272のコードも試してみようと思います。 >>272 実行してみたところこんな感じでエラーになりました。 [root@centos ~]# touch test1 test2 test3 [root@centos ~]# tar cf - test* |perl -MArchive::Tar -e '$tar=Archive::Tar->new(\*STDIN);$tar->remove("test1");$tar->write(\*STDOUT)' |tar tf - Can't locate Archive/Tar.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 \ /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl \ /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .). BEGIN failed--compilation aborted. tar: これは tar アーカイブではないようです tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました どこが間違っているのでしょうか? 「古文書のありかを突き止められません」も読めないゆとりか? Can't locate Archive/Tar.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 \ Archive::Tarがインストールされていない。 $ cpan Archive::Tar かな? >>279 ありがとうございます。動いたようです。 しかし、会社では使えないんだろうな… ./configureでインストールする時に毎回prefixオプションつけて場所指定するのめんどうなんだよね。 標準のインストール先は/usr/local以下になってると思うんだけど最初に環境変数与えておくとかで変更する方法あるかな? solaris8 ってupdate_drvコマンドって無いの? ぐぐってもそれらしき情報が無いんだが http://www.sunfreeware.com/ ここにもないし よく訓練されたSolaris信者はupdate_drvコマンドとか使わないw そうなんですか 訓練されてはない感じなものですみません。 vmwareのtoolがそれを必要としているんですが デフォでインストールされてないのでどうしたものかと ttp://download.oracle.com/docs/cd/E19455-01/817-5440/6mkt7mdj9/index.html Solaris8にも入ってるみたいだけど OSリリースによって違うのかな そうですか入ってるですか・・・ 04/01を使用してますがね。 >>147 solarisの場合、5bin/echoは bin/echoそのものだろw プロンプト用プログラムで、 処理時間がかかるルーチンを実行中に 何かキーボードが押されたらその時点での進行状況を表示、または中断、 という仕様を要求されました。 getchar()では、キーを押すまで帰ってこないし、 そもそもgetchar()を呼んだタイミング以外でもキーに反応しなければならないので 無理だということはわかりました。 こういうのは割り込みを使うそうですが、調べると、 キーボードはIRQ1を使っていることはわかりました。 C言語で、IRQ1を読み込んでプログラムを分岐させる?のは どうすればいいか、誰かわかります? ttp://d.hatena.ne.jp/wocota/20090306/1236326294 こんなん出てきたけど参考になりそう? >>290 シグナルでやれば良いんじゃね Ctrl-C で SIGINT のハンドラで処理をするってかんじで。 >>292 シグナルも考えましたが、Ctrl-Cじゃ駄目なんです>< HIT ANY KEY で、AとかBとか、どのキーが押された時でも 反応しないといけないんです。 tcgetattr,tcsetattr,cfmakerawあたりでできなかったっけ 書いた後だけど cfmakerawがSolarisに無いんだな・・・ Google Code Searchでcfmakeraw使っているプログラムで Solarisの場合はどうやってtermiosを設定しているか調べれば それが答えだと思う >>294 ,295 tcsetattr()で端末設定いじっても、stty rawコマンドと同様に 端末入力を行バッファしなくなるだけ(Enterなしに入力が返るだけ)で、 getchar()とかで入力を読みに行ったタイミングでしか 反応できないという問題の解決にはならないでしょ。 元質問はgetchar()を呼ばずに長時間処理を行なっているプログラムに対して、 どれかのキーを押した時に割り込み的にプログラムの流れを変えたいということ みたいだから。 >>296 は頭悪いのか?w スレッドじゃなくて別プロセスでシグナル投げても良いだろ デバドラ書きましょうってことじゃなかったのかorz Linuxの libc.so.* みたいに、 共有ライブラリなんだけど直接コマンドとして実行も可能なライブラリファイルって、 どうやってコンパイルして作るの? >>302 Solaris関係あります。 Solarisで自作共有ライブラリ(libhoge.so.1とか)を作る時、 ./libhoge.so.1で実行しても実行できるようにしたいんです。 すみませんが共有ライブラリを実行してうれしい方のみ回答をお願いします >>301 >>303 逆にLinuxでは共有ライブラリが実行できるのかよw そんなOS今までに見たことないな。 どうせbashとかのaliasで、共有ライブラリを実行しようとすると 別のコマンドが起動されてるとかのオチだろw SPARC(32bit)にはフラグを直接操作する命令がない。 N=ネガティブフラグ、Z=ゼロフラグ、C=キャリーフラグとするとき、 以下の状態にフラグをセットするアセンブラ命令を考えよ。 (1) N=0 Z=0 C=0 (2) N=0 Z=0 C=1 (3) N=0 Z=1 C=0 (4) N=0 Z=1 C=1 (5) N=1 Z=0 C=0 (6) N=1 Z=0 C=1 ただし、レジスタの値は一切変化させてはいけない。 レジスタの現在値は不定(不明)とする。 V(オーバーフロー)フラグはすべてV=0となってよい。 最小の命令数の回答を正解とする。 ・・・以上わかる方、できれば月曜日までにお願いします。 共有ライブラリの実行ってバージョンとか出すだけじゃなかったか? exec に細工してあって共有ライブラリののマジックならヘッダのバージョン読んできて表示とかなら簡単だろ。jar が直接実行出来るのも #! でインタプリタ呼び出すのも exec の機能なんじゃないの? セグメンテーション違反がx86ではなく、SPARCに問題にあって発生 している場合 どうしたら実行できますか 一年半越しの質問に答えるのもなんだけど --sharedだろうと無理矢理エントリポイントを指定しておけば動くんじゃないの 仕組みわかってれば予想できる事だと思うが SPARCに問題があるのじゃなくて、 バイトーオーダーを考慮せず実装した のでバグっているだけだろ。 http://ja.wikipedia.org/wiki/ エンディアン >>313 全く同じコードがMIPS(EB)では正常に動くので、 バイトーオーダの問題じゃないです。 事前情報が適当すぎ 四の五の言わずにデバッガかませばすぐわかるだろ 安全側の判断として、SPARCのセグメンテーション違反である可能性が否定できない ので、運転再開を認めないことになりました。 SPARCでセグフォルトする原因を調べなかったばかりに x86/mipsで偶然動いていたバグを見過ごすわけだな。 質問です Gccのコマンドラインをだーって入力するとコンパイル出来るじゃないですか それにオプションをさーっと追加して静的コンパイルしたいんです 出来ますの?ちなみに-staticを付けてみましたが変な英語で止まりました 勿論ググりましたが、当方馬鹿なのでわかりません サルでも分かるような回答を強く期待します 僕はこういう小バカにしたような書き方しか出来ませんが、凄く切実に知りたいです さぁどうぞ↓ 先日、他部署を交えて開かれた社内技術交換会でのこと。 先輩は自分が開発担当したあるソフトのプログラミング中に思いついたという 文字列処理の高速化アルゴリズムについて得意気に解説し始めた。 話し始めてしばらくして、隣の部署の人が口をはさんだ。 「それ、有名な番兵のアルゴリズムですよね。ウチでも昔はよく番兵を使いました。 でも番兵はマルチスレッドで使えないという欠点があるので、 今では番兵のアルゴリズムを使うことは禁止してます。 これ使われると発見しにくいバグになって困るんですよねぇ… ところで今日のお話というのは、 番兵のアルゴリズムをマルチスレッドに対応させるような方法か何かですか?」 そのあと先輩の話は支離滅裂になり、何の技術交換会だったのか よく覚えていない… このあたりをまじめにやってない技術者をあつめて 「データ構造とアルゴリズム」みたいな本を通読 する勉強会をすべきなんだろうな。 >>319 makeコマンド(Makefile)を勉強すれば幸せになるかも。 SolarisでUNIXを覚えた君たちへ 君たちが悪いわけじゃないんだよ 君たちが覚えたSolarisの将来が無かっただけ 当時の社会が悪かっただけ 君たち一人ひとりが悪いわけじゃないんだよ だから自分を責めないで 社会と向き合ってください そうすればきっと気が付くはず 君たちのSolarisの知識が無用なのだということに 君たちの存在自体が社会の足枷だということに ハゲ侍 サブコミュ イケメン スカイプ マリリンマンソン Twitter マリオ64 ゲーム実況者 マリオカート ハゲ侍 ツイッター 星のカービィ64 マリオサンシャイン ニコニコ超会議 ポケモン フレコ MH4G アメブロ ハゲ侍 アメーバブログ 仕事 Skype ツイキャス モンハン 歌い手 スプラトゥーン マニアック ハゲ侍 動画 顔 ドリームクラブ 好き 刃牙 サイレントヒル ドラゴンボール イケボ ハゲ侍 漫画 フレンドコード NG縛り ニコニコ生放送 歌ってみた 太刀 ニコニコ超パーティー コミュニティ ハゲ侍 大学 アキネーター 配信 ニコ生 サブコミュ マリリンマンソン イケメン 学歴 ハゲ侍 マリオカート Twitter スカイプ マリオ64 ツイッター ゲーム実況者 星のカービィ64 ニコニコ超会議 ハゲ侍 ポケモン マリオサンシャイン フレコ MH4G アメーバブログ 仕事 Skype ツイキャス ハゲ侍 モンハン 歌い手 マニアック 動画 アメブロ スプラトゥーン 刃牙 ドリームクラブ ハゲ侍 好き サイレントヒル ドラゴンボール 漫画 顔 NG縛り フレンドコード ニコニコ生放送 http://kanae.2ch.net/test/read.cgi/pcqa/1421101110/51 http://kanae.2ch.net/test/read.cgi/pcqa/1415921104/55 http://kanae.2ch.net/test/read.cgi/pcqa/1436852775/17 誰でも簡単にパソコン1台で稼げる方法など 参考までに、 ⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。 グーグル検索⇒『宮本のゴウリエセレレ』 EBKNZABJRN チョンマゲオヤジ、そろそろ牛刀持った竹田にぶっ刺されんぞw 知り合いから教えてもらったパソコン一台でお金持ちになれるやり方 時間がある方はみてもいいかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 TPQOS Solaris10に勝るLinux系OSがあったら教えて >>334 どのLinuxでも性能面では勝ってるが 有償サポートが必要ならRedHatだろうな イモトが結構上位には厳しくない正当化するなら、政治に関心は無くならないどころか反感持たれるのにね 別館ババアには申し訳ないけど服屋とか禿とか寄与度でかいとこだけ下げてない きつね事件振り返りやるんか… read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる