UNIXプログラミング質問すれ Part10

■ このスレッドは過去ログ倉庫に格納されています
2011/04/18(月) 17:06:36.77
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド 

前スレ 
Part9 http://hibari.2ch.net/test/read.cgi/tech/1205795434/
Part8 http://pc11.2ch.net/test/read.cgi/tech/1147946176/ ;
Part7 http://pc8.2ch.net/test/read.cgi/tech/1127373405/ ;
Part6 http://pc8.2ch.net/test/read.cgi/tech/1116908090/ ;
Part5 http://pc8.2ch.net/test/read.cgi/tech/1105723117/ ;
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/ ;
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/ ;
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/ ;
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html ;


Part3のミラー 
http://makimo.to/2ch/pc5_tech/1085/1085930894.html ;
Part2のミラー 
http://makimo.to/2ch/pc5_tech/1055/1055110889.html ;
2011/07/24(日) 04:26:40.76
>>93
自分にしっくり来るほう
97デフォルトの名無しさん
垢版 |
2011/08/09(火) 02:45:04.05
おいしいチャーシューの作り方を教えてください
2011/08/09(火) 02:54:14.26
1. 髪を伸ばしてオールバックにする
2. 裸になり黒パンを履く
3. 相手に喧嘩を売って自分からキレる
2011/08/09(火) 05:00:48.53
http://www.youtube.com/watch?v=BNmQdvq58BA
2011/08/18(木) 19:43:09.42
Makefileで
a.h : b.h
みたいなのが書いてあるんですが、
これって何なんでしょう?
2011/08/19(金) 00:04:32.05
どっかで見た質問だったと思ったらここか
2011/08/31(水) 15:59:35.10
>>100
a.h は b.h に依存している
という意味です
2011/09/17(土) 19:43:33.04
起動してから一定時間実行したら終了するプログラムは
どのように作るのが普通なんでしょうか?
実行する内容としては例えば1時間というパラメータを与えられて起動されたら
その間ファイルを開いて読み取って閉じて次のファイルを読み取って
という事を繰り返して1時間経ったら自ら終了する感じで。
2011/09/17(土) 20:05:33.54
alarmしてSIGALRMのシグナルハンドリング。
2011/09/17(土) 23:45:50.55
お手軽にループの中でtimeで現在時刻もらって指定時間時間経過したらそのループ抜けるとか
2011/09/19(月) 02:40:53.70
unix初心者です。

リモートホストからローカルホストに戻るコマンドを教えてください。

ググってもわからなかったです。

プログラミング以前の問題で申し訳ないですが、
よろしくお願い致します。
2011/09/19(月) 03:34:08.39
exit
2011/09/19(月) 07:57:15.94
>>107
ありがとうございます。
助かりました。
2011/09/19(月) 11:20:30.90
>>104-105
ありがとうございます。
結局その2つになってしまいますよね。
シグナルは確実に止まるけど1個しか使えないし、時刻を取得してというのはその間に実行する処理の量によっては時刻取得のオーバーヘッドがシャレにならんかったり指定した時刻からかなり遅れて終了したりとかありますよね?
2011/09/19(月) 13:11:28.93
>>109
だから、(何にでも言えるが)汎用的な方法はない
対象に合わせて適切な方法を選ぶしかない
2011/09/20(火) 12:17:05.97
>>109
外部からジョブを終了させるってことが、
システム、言語、環境に関わらず、
「本質的に」難しい仕事ってのは理解している?
スレッドを外から終了させるようなAPIが
全く推奨されてないのと同じ理由なんだけど。
2011/09/20(火) 22:07:30.83
>>109
オーバヘッドを気にするならタイマ用のスレッドを作りなされ。
1時間寝てから通知すればよいでしょ。FD でも cond でも。
2011/09/21(水) 02:14:03.87
つまらんことを気にする場合、大体はどうでもいい事にこだわっていると思う

RTOSじゃないしファイル読んでる時点で1sくらい普通にずれるべ
2011/09/21(水) 19:04:06.30
1時間経ったらがなんで1時間キッチリにせんといかんのだ?
2011/09/21(水) 21:39:51.69
109で
>時刻を取得してというのはその間に実行する処理の量によっては
>時刻取得のオーバーヘッドがシャレにならんかったり指定した時刻から
>かなり遅れて終了したり

とかゆってるからシビアな条件があるのだろう
2011/09/22(木) 11:33:26.50
後始末のないworkerなら強制的に止めてしまえばいいし、
後始末が煩雑ならworker側でyeildするのがいい。
2011/09/24(土) 01:49:26.29
SIG_DFLの時の動作がプロセス停止になっているシグナル(SIGTSTPとか)が
時々止まらないことがあるのはなんでだべ?
2011/09/24(土) 02:00:46.48
>時刻取得のオーバーヘッドがシャレにならんかったり
ループの根元でやりゃ、負荷はバカにならんわな

お手軽にやったけど、何か解決方法はないかという
これ以上何も考えません的なところが素敵
2011/09/24(土) 09:56:32.08
>>117
ブロックしている瞬間があるんじゃないの?
2011/09/24(土) 12:24:20.07
>>110-118
ありがとうございます。

はい、現状は1時間を1本計れれば良いけど、それを1つのプロセスのままで複数の1時間を
スタートの時刻が異なっても計れるようにするには初めからどのような作り方をするべきかとか
1時間をまたいで読み取り中だったデータは捨てるのか全部入れるのか1時間ちょうどの部分で
切るのかとか、ちょっと基本的な点でアレ?とか思っちゃったのでちょっと質問してみた感じでした。
2011/09/24(土) 12:38:38.47
最後の2行は新しい質問か?初耳だが、そんなのプログラムに要求されていることによるだろ。
どの挙動をすべきかなんて作ってる奴にしか分からん。
2011/09/24(土) 13:05:38.56
最初の2行はお礼では。
2011/09/24(土) 14:44:30.30
真ん中の二行は…てやかましいわ!
2011/09/25(日) 02:55:22.61
wchar_tって使ってる人いる?
2011/09/25(日) 19:21:08.09
canna以外で見たこと無いけど
2011/09/25(日) 20:14:34.75
wchar_t をワッッチャァァァって発音したら、
職場の人間全員が ( ゚д゚) −> Σ( ゚д゚ ) になった

どうも _t を発音しなかったのがまずかったみたい
2011/09/25(日) 20:51:03.99
あー・・・ なるほど・・・ 大事なところだもんな・・・
2011/09/25(日) 21:27:03.89
だぶちゃーてー(!ティー)だよな。
2011/09/25(日) 21:46:54.79
だっちゃ
2011/09/26(月) 00:00:03.88
たしかLinuxとかは一文字4byteなんだよねwchar_t。いやだなあ
2011/09/26(月) 01:49:00.47
なにいってんのこの人。ダサい。
2011/09/28(水) 03:14:27.91
>>124
C++ では std::wstring を使ってプログラムを書けば無問題、
そんなふうに考えていた時期が、俺にもありました。
2011/09/28(水) 10:04:03.97
VC++だと問題ないけどね。Unix系だと罠がいろいろとありそうな・・
2011/09/28(水) 12:02:22.35
>>133
いまどきUnix系でプログラムしてる人は少数派だろ
2011/09/28(水) 12:11:37.58
それをこのスレで言うかwww
2011/09/28(水) 15:43:47.23
飛んで火に入る夏の虫

もう秋だぞ>>134
2011/09/29(木) 11:43:22.93
AndroidやiOSはUNIX系かね?
古典的なAT&T由来のC APIではないけれど。
2011/09/29(木) 12:00:16.75
全ての作業をWindows上でおこなうのは少数派かな
2011/09/29(木) 18:32:55.72
iOSはしらんけどAndroidはnix系だな
14067
垢版 |
2011/10/04(火) 15:07:33.28
今日行ったら200円になってたから思い切って買った
14167
垢版 |
2011/10/08(土) 01:51:21.45
ちなみに書籍タイトル正確なのは Xアプリケーションプログラミング1 xlib編 92年発行の東工大の教授の本だ
19年も前の本だけど19年前から顔文字ってすでにあったのな
19年前って俺まだ小学校低学年だったからパソコンとかよく知らんかったけど
X11R5が出たばっかのころのらしい、今のに使えんのかな
2011/10/08(土) 06:03:00.48
>>141
これ? http://www.amazon.co.jp/dp/4883170225/ なつかしい。

自分は当時大学生で、大学で何百万もするUNIXワークステーションを使って
サンプルとか打ち込んでたなあ。今なら安PC+Linuxでより快適にできる。
LAN経由で近くで作業している奴のディスプレイにイタズラの画面を出したり...

一般家庭はともかく大学にはインターネットの電子メールとかネットニュースとかが
既にあったし、顔文字とかAAも使われていた。www(草じゃないよ)が出てきた前後だな。
大学のマシンにサーバー立ち上げたっけ。エロのw 今ならマスコミ沙汰になって
退学処分か?

Xのプログラミングから離れて久しいのでアレだが、Xlibはあんまり変わってないんじゃ?
すなわち今でも使えるのでは。あえて今から低レベルなものを使ってプログラムを
書きたいのであれば...
2011/10/08(土) 06:54:30.22
dwm, xmonadといったタイル型ウインドウマネージャや
dmenu, dzenなどのシンプルなランチャの流行もあって
今でもXLibプログラミングは熱いですお
2011/10/08(土) 08:18:56.56
>>143
そうなんだー。
今dwmのソースをダウンロードしてみたらソースファイルが一つだけ...
こんなんでいいんだ。

サーバはXを使うとして、ウインドマネージャを自作するなんてのも面白そうだね。
ウィジェットとか言い始めると敷居が高いと思われるので...
145デフォルトの名無しさん
垢版 |
2011/10/08(土) 08:35:55.73
age
2011/10/09(日) 01:44:52.52
この質問ここでいいのか分からないんだけど
↓のサイトのやりかたで、つまりcatコマンドからMakefileを作ろうとしたんだけど
gccの前のTABが入力できなくってcshでやってたんだけどTABが入力できないのってシェルの問題?
TAB入力できなくって変わりにスペース入れたらmakeがエラー出てググったらスペースじゃダメとか知らなかったよ

flags for compiling Xlib.h in gcc
http://www.linuxquestions.org/questions/programming-9/flags-for-compiling-xlib-h-in-gcc-333230/
2011/10/09(日) 01:59:23.56
シェルスクリプト総合 その18
http://hibari.2ch.net/test/read.cgi/unix/1308195527/
2011/10/09(日) 04:09:22.56
そのスレにcsh使いを誘導しないで欲しい
cshのmanのヒアドキュメントを読む。echoで書く。cshを捨てる(推奨)
2011/10/09(日) 04:15:21.44
インタラクティブに使ってるなら
$ cat >Makefile
中身入力、改行
Ctrl+D
2011/10/15(土) 00:10:57.09
Rob Pike曰く、Dennis Ritchieが亡くなったと。
https://plus.google.com/u/0/101960720994009339267/posts/ENuEDDYfvKP?hl=en

南無
2011/10/15(土) 01:23:11.92
お悔やみ申し上げます
2011/10/15(土) 18:28:21.23
          _____
  .ni 7    /        \  ご冥福をお祈りします
l^l | | l ,/) / /・\  /・\ \    .n
', U ! レ' / |    ̄ ̄    ̄ ̄  |  l^l.| | /)
/    〈  |    (_人_)    |  | U レ'//)
     ヽっ     \   |    /   ノ    /
 /´ ̄ ̄ ノ     \_|    \rニ    |
                      `ヽ   l
2011/10/15(土) 20:21:34.20
2011/10/15(土) 20:29:40.38
まちごた
まいいや
155デフォルトの名無しさん
垢版 |
2011/10/18(火) 17:07:46.91
>>70
ライセンスの問題とか絡むからじゃね?
無料で公開すべきものを本を買うとか金銭発生するし
2011/10/19(水) 08:32:31.05
>>70
「unix向けアプリ」というのはたとえばGTK+とかでアプリを作るという事でいい?
いくつか本が出てたと思うけど。実際に本屋にないという意味?
2011/10/19(水) 09:12:36.56
隣のおっさんうるさい
2011/10/19(水) 12:42:25.99
じゃあ転職しろ
2011/10/21(金) 13:03:48.22
>>156
普通はコマンドライン版を指すよ
2011/10/21(金) 19:53:17.14
そんなこたーない。
2011/10/21(金) 22:24:13.25
「コマンドラインアプリ」ってあんまり聞かないな
2011/10/22(土) 02:07:40.32
cursesを使ったようなやつ?
2011/10/22(土) 02:44:59.58
単にコマンドって言うもんね。
2011/10/22(土) 03:01:48.61
Xアプリケーションプログラミング1 xlib編で書かれていたアプリケーションとは
不特定多数のユーザに使われることを前提として作られた,"汎用的で便利なプログラムのことをアプリケーションと呼ぶ" (引用 p.27 l.17~18)
だそうで
X用のプログラムは必然的にアプリケーションと呼ばれるだけの性質を持つそうです

2011/10/22(土) 11:25:36.43
Ach, so.
2011/10/22(土) 12:29:12.68
http://www.amazon.co.jp/dp/4883170225
これか? 20年も前の歴史的価値品ない骨董本引用して何が言いたいんだ? ジジイ。
2011/10/22(土) 16:16:40.17
>>166
流れからすると>>67の発言みたいで、ジジイじゃないっぽいけどw

自分はたぶんジジイだがw X11のプログラミングの本で、これみたいに比較的
気楽なノリで始められる本はあまりなかったように記憶しているのだが。
何かいい本をご存知ですか?

そもそもXlibを使うこと自体が骨董に属するんだったりしてw
何か違うもの、たとえばOpenGLとかでやった方がいいのかな?
2011/10/22(土) 16:49:58.99
大昔でもアプリ向けにはathenaとかmotifとか使ってたんでは。
あとOpenGLと比べるのもなにかおかしい気が。
2011/10/22(土) 18:18:16.62
>>166の2巻目はAthenaウィジェット編だからな
当時もXlibでアプリ作るとか無いだろ
2011/10/22(土) 19:08:53.18
>>168
今はXlibの話をしてるつもりなんで逆にAthenaとか言い出す方がちょっと違う。

あ、イベント処理とかもいるからGLUTもか。

>>169
Xlibだけで自分でボタンやメニューを作ったりしたのはいい思い出w
2011/10/22(土) 19:27:58.00
ああそうなの、アプリの話かと思ったわ。すまんね。
2011/10/23(日) 00:20:01.27
67は今やオールドテクノロジー化したXlib本を買って何がしたいのやら
2011/10/23(日) 00:25:28.54
オールドテクノロジーってわけじゃないけども。
今時のGTKアプリだって下位層で使ってるんだから。
「低レベル」ってのが適切な形容詞だと思う。
2011/10/23(日) 00:28:26.89
時代はXlibからXCBだと聞いた
2011/10/23(日) 13:13:19.54
>>67
X11
http://xjman.dsl.gr.jp/X11R6/X11/
2011/10/23(日) 13:15:02.36
>>67
Xlib Programming Lectures
http://homepage3.nifty.com/rio_i/lab/xlib/
2011/11/05(土) 15:09:51.61
EmacsやらNetbeansやらをいじっていて気付いたのですが,
大昔(EclipseもNetbeansもなかった頃)のGNUとかオープンソース界隈のエロい人たちが使っていた
IDE(統合開発環境)ってどうなってたんでしょうか?

IDEなんか使ってなくて,CUIに仮想デスクトップ+vi/Emacs+gcc/gdbとか普通にありそうですが…
2011/11/05(土) 15:55:37.08
いまはemacsにもIDEが乗っかってる時代だからな
2011/11/05(土) 16:11:48.60
フルカスタマイズしたEmacsがIDE相当だな
結構色んなこと出来るよあれ、環境作るのは面倒いけど
2011/11/06(日) 06:57:42.24
仮想デスクトップがscreenか
2011/11/06(日) 10:49:33.98
・エディタの無い時代
ソースは紙に下書き、パンチカードに清書して入力するよ!
出来上がったソースは印刷してチェックだ!
ジジイ達が処理の切れ目に書く馬鹿デカいコメントはこの時代の名残りだよ!
だって印刷物は関数のところへジャンプも、そもそも検索も出来ないからな!

・ラインエディタ時代(edなど)
環境によっては標準出力はプリンタかも知れないよ!
でも入力してるその場でソース見たり、エディタによっては検索も出来るよ!便利!

・スクリーンエディタ登場(viなど)
なんと行の途中の文字だけ編集したり出来るよ!
これで長い行もサクサク編集出来るね!
ディスプレイもみんなの分あるから、超便利になったよ!
2011/11/06(日) 13:20:47.68
>>181
プログラム書いた紙(コーディングシート)はパンチャーのおばちゃんにパンチしてもらうんだぜ。
その後の修正は自分でパンチするけどね。
2011/11/06(日) 14:15:14.94
前の職場にリアルでリアルでパンチャーやってた頃があるって言ってたパートのおばちゃんが居たな…
2011/11/06(日) 16:05:23.93
emacsが無かった時はvi使ってたよ
いまでも普通にvi使う
echo>>
だけで済ませることもしばしば
185177
垢版 |
2011/11/06(日) 18:53:49.18
このスレのエロい人thx!

複数の言語で何か処理してファイルで読み書きするというレベルに達したので,次のレベルに進みたくて調べたけど
大体予想通りということがわかりました.

昔と違って分野が複数ある(並列化一つとってもマルチスレッド,マルチコア,マルチプロセッサにGPU)ので
進む方向性を選ぶのが難しい.
2011/11/06(日) 19:36:36.25
>>185
ハードとソフトが混ざってんぞ
マルチスレッド、分散処理、GPGPUな
あ、あとSIMDかSSE命令などのデータ並列命令な
2011/11/06(日) 22:26:54.73
>>185
>昔と違って
本質的にはそんなに違わんw

>進む方向性を選ぶのが難しい.
何かをどうしても高速に計算したいとかあるわけじゃなく、お勉強でやってるだけなら
かたっぱしからやっとけばw
2011/11/06(日) 23:08:12.64
馬鹿には無理
189177
垢版 |
2011/11/07(月) 00:36:34.52
情報系の院生として研究に従事していますが,自分の立ち位置は「他学問から対象問題を収集,複数の手法を組み合わせて解く」こと.
問題に対する解法の有効性を検証するのが仕事なので,シンプルに組んでそこそこ新しい計算端末で4日ほど計算させる.
有効性が検証されたら,複数の小問題として分割して学部生の卒論として展開されます.
なのでGPGPUやMap-Reduceなどの先進的な手法を自分で扱いたいのですが,そこまで時間を確保できない.

>>186
すみません,利用する選択肢で書いてしまいました.
ただGPGPUなどもそうですが,自然科学分野の対象問題を性能を引き出すように構築するのって
すごく難しい(この変数が何バイトで…と考えなければならないので)

>>187
昔といってもベーマガ全盛期のあたりを指しています.
教科書を元に脇目もふらず,ロジックを検討できるのはいいなぁと思います.
今ではWebアプリ(phpからJSP,RoRなど)やクラウドも登場して選択肢と夢ばかりがひろがりんぐです.

>>188
そのとーりだと思います

2011/11/07(月) 02:56:08.65
コンパイルが通らなくて困っています。
OS BSD/OS 4.3
コンパイルしたいもの libfetch
コンパイラgcc 2.95.3
cc -O2 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized
-Wreturn-type -Wcast-qual -Wpointer-arith -Wwrite-strings
-Wswitch -Wshadow -Werror -D_LARGEFILE_SOURCE
-D_LARGE_FILES -D_FILE_OFFSET_BITS=64
-DDEF_UMASK=0022 -I/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libarchive/libarchive
-I/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libfetch
-DHAVE_NBCOMPAT_H=1
-I/usr/pkgsrc/bootstrap/work/wrk/pkgtools/pkg_install/work/libnbcompat
-I. -D_LARGEFILE_SOURCE -D_LARGE_FILES -DFTP_COMBINE_CWDS -c common.c
cc1: warnings being treated as errors
common.c: In function `fetch_write':
common.c:639: warning: function declaration isn't a prototype
というエラーでコンパイルが通りません
common.cのソースは
#ifndef MSG_NOSIGNAL
#include <signal.h>
#endif


2011/11/07(月) 02:56:51.16
ssize_t
fetch_write(conn_t *conn, const void *buf, size_t len)
{
struct timeval now, timeout, waittv;
fd_set writefds;
ssize_t wlen, total;
int r;
#ifndef MSG_NOSIGNAL
static int killed_sigpipe;
#endif

#ifndef MSG_NOSIGNAL
if (!killed_sigpipe) {
signal(SIGPIPE, SIG_IGN);
killed_sigpipe = 1;
}
#endif
639行目はsignal(SIGPIPE, SIG_IGN);になります。
man signalをした所
void *signal(sig,func());
void (*func)(sig)
と書いてありました。
<sys/signal.l>ヘッダファイルは
__BEGIN_DECLS
void (*signal __P((int, void (*) __P((int))))) __P((int));
__END_DECLS
#endif /* !_SYS_SIGNAL_H_ */
と書いてありました。
もちろんヘッダファイルにSIGPIPEとSIG_IGNは定義してあります。
これはOS側のsignalが古すぎてコンパイルできないのでしょうか?
なんとか良い方法は無いでしょうか?
2011/11/07(月) 04:36:48.82
>>191
>OS BSD/OS 4.3

えらく懐かしいものをお使いで。特に自分で解決できる技量がない場合には、
より新しくて沢山の人が使っている環境を使った方が楽だよw で、

安直な方法: -Werror なしでコンパイルする

もう少しちゃんとした方法:
1) 本当に signal(SIGPIPE, SIG_IGN); の箇所か確認(試しにここをコメントアウトしてみる等)
2) 関数やその引数に最終的にどういう宣言が使われているか確認。プリプロセッサ処理
後のファイルをチェックしてみるとか。
(3) (2)の原因を理解して修正。インクルードやマクロ定義を修正したりとか。

>void *signal(sig,func());

manにこう書いてあるのはググってもそうひっかからないんだけど
http://mail-index.netbsd.org/netbsd-bugs/1996/03/24/0001.html
というのがあるので、あるリリースのBSDにはそういうmanが付いてきたのかもね。
2011/11/08(火) 01:55:19.23
>>192
すいません。
ありがとうございます。
1)はコメントした所、コンパイルとおりました。
2)はすいません。gccとpkgsrcに不慣れなため、まだ試していません
3)はビンゴだと思います。
たぶんBSD/OS 4.0のmanをインターネットで見つけたのですが、
http://www.eecs.harvard.edu/syrah/vino/release-0.40/man/programref/libc/signals/signal.3.txt
void(*signal(int sig, void (*func)());)()
と正しいようです。
ヘッダファイルを修正してやってみます。
2011/11/22(火) 02:33:19.77
リチャードスティーブンスの本でわからない点があるので質問します

unixネットワークプログラミングでifreq構造体ifr_dstaddrの説明でp-to-pリンクの反対側とありますが

どういうことでどういう値が入るのでしょうか
2011/11/22(火) 09:03:54.79
ifconfigでPPPなどのpoint-to-pointなインターフェースを作ると、
対向側のIPアドレスが入る。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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