X



UNIXプログラミング質問すれ Part10
■ このスレッドは過去ログ倉庫に格納されています
0001unco ◆manko/yek.
垢版 |
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 ;
0796デフォルトの名無しさん
垢版 |
2015/10/14(水) 07:56:05.77ID:AV8Y6RLf
UNIXのコマンドラインプログラムはデフォルトではキーボードの押下をユーザープログラムが直接受け取ることが出来ない
キーボードの押下はカーネル側でキャッチされ、カーネルにより画面にエコーバックされ、カーネル側の入力のバッファに溜まる
改行に相当するキーが押されてはじめてバッファに溜まっていた入力がまとめてユーザプログラムに渡される

タブキーを押して候補を表示するようなプログラムは、上記デフォルトモードを別のモードへ変更する必要がある
これにはたぶんtermios(3)とかで参照できるカーネルAPIを使う必要がある
古いUNIXでは入力に対するioctl(2)を直接使うことが多かった
でもreadlineみたいなライブラリを使うほうが簡単だろうな
0798デフォルトの名無しさん
垢版 |
2015/10/14(水) 11:30:43.18ID:EGTHNy+H
rlwrapでよくね
0799デフォルトの名無しさん
垢版 |
2015/10/14(水) 14:39:53.65ID:NrBXnG0t
>>796
草の根BBSが流行った頃ターミナルソフト作るためにioctlやりまくったなー
もうあんなのやだ(つかやらないで済む時代になってうれしい)

けどUnixのTerminalサポートするのは今でも結構つらいよね。
ClojureでEmacsライクなエディタ作ろうとしてGUIサイドはどってことないのにTermcap触った瞬間から地獄になって投げたわ
0800デフォルトの名無しさん
垢版 |
2015/10/14(水) 22:21:24.79ID:2ChufbG/
検索ワードはこれかな?「ノンブロック getchar」

このブログ記事が参考になるな。

「getcharをnonblockingで行う ( ターミナルからの入力で改行を待たない )」
0803デフォルトの名無しさん
垢版 |
2015/10/14(水) 23:21:36.26ID:5HbAHV4d
>>802
お前、性格悪いね。消えたら?
0805デフォルトの名無しさん
垢版 |
2015/10/15(木) 07:50:14.32ID:Jc9I9p20
ここの住民レベル低過ぎてワロタwww
0808デフォルトの名無しさん
垢版 |
2015/10/15(木) 10:36:42.36ID:8odITiKe
googleの使い方がわからない
人のアドバイスは無視する
やたら連投する

救いようがありません♭
0809デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:38:25.62ID:CkBS4JKP
stty で端末の設定を変える。
バファリング・エコーをoff
system("stty raw -echo")
バファリング・エコーをon
system("stty cooked echo")

dd で押されたキーを取得。
1バイト転送して、エラー出力を捨てる
dd_cmd = "dd bs=1 count=1 2>/dev/null"

dd_cmd | getline key
close(dd_cmd)
0810デフォルトの名無しさん
垢版 |
2015/10/15(木) 16:14:21.29ID:DrVVm1l+
次の本を読んでからこのスレに書き込んでね

詳解UNIXプログラミング
エキスパートCプログラミング
0811デフォルトの名無しさん
垢版 |
2015/10/15(木) 20:38:31.35ID:6VaIlzUA
いや、もう>>800でFAだから。
0817デフォルトの名無しさん
垢版 |
2015/10/17(土) 13:01:09.35ID:0Wjec6mz
どんなに技術があっても人を茶化すような奴は所詮たいしたことない奴だよ
0821デフォルトの名無しさん
垢版 |
2015/10/18(日) 01:57:46.77ID:Kfk1zXQv
ニフラムってさ
相手との遭遇をなかったことにするんだよな

いつまで経っても未経験のまんま
0824デフォルトの名無しさん
垢版 |
2015/10/18(日) 19:09:39.36ID:zwvDDOCv
>>823
無能だなwハゲ
0825デフォルトの名無しさん
垢版 |
2015/10/22(木) 22:40:46.38ID:TKyrAkIB
疎通確認のためcat hosts(grep でコメント行など削除)をパイプでpingに渡したんですがpingが発行されないです。バグですか?
0828デフォルトの名無しさん
垢版 |
2015/10/23(金) 02:59:50.01ID:yDnEGRAb
>>826
cat hosts l ping
0832デフォルトの名無しさん
垢版 |
2015/10/23(金) 12:22:45.18ID:yDnEGRAb
ごめん。端折りすぎた
cat hosts l awk '{print $2}' でホスト名のリストを取得した。

で、そいつをパイプ経由でpingしたわけさ
0835デフォルトの名無しさん
垢版 |
2015/11/01(日) 14:19:33.90ID:cQN+SvvU
>>832
それじゃ ping を無引数で実行して標準入力からホスト名のリストを入力することになってる
わかりやすく bash/ksh で愚直に書くと

for ff in `cat /etc/hosts | grep -v '^#' | grep -v '^$' | awk '{print $2;}'`
do
 ping ${ff}
done

ファイル /etc/hosts の中で # から始まるコメント行と空行だけは除外するようにした
あとインデントのために行頭に全角空白文字入れてあるから space/tab に置換して
0837デフォルトの名無しさん
垢版 |
2015/11/24(火) 01:38:32.81ID:+ebJ8Cop
>>836
なんか20年ぶり位に聞いた感じMotif
つか今時X11アプリ書くのに使うのか?と思わないこともない。
0839片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/11/24(火) 18:10:49.46ID:YJQOp7Th
Xt+Xawでアイドル時処理はどうやるの? 教えてちょんまげ
0842デフォルトの名無しさん
垢版 |
2015/11/24(火) 23:18:46.91ID:+ebJ8Cop
>>841
DesktopとしてのX11はもう死んだも同然じゃないか
それでもあえてX11アプリ書くというなら、今だとgnomeにしとけばいいんじゃないの?
X11書籍いくつかもっててXawのも手元にあるけど、ものっそ古いし。
なんかMZさん20年以上前の技術かつ、すでに死語な物引っ張り出してる感半端ないnndakedo.

#いやむしろMZ氏ならSchemeから生のX11LibベースのGUIライブラリ書いた方がよくね?
#昔のOMRONのUnixマシンがLispベースのアレゲ感あった感じで
0843デフォルトの名無しさん
垢版 |
2015/11/24(火) 23:34:02.25ID:8d9+0wl3
いや、そのLinuxがもうX11からWaylandに移行しようとしてるんだよ
一応ある程度の互換性保つようだけど、ほんとにもういまさらなんだよ
0844片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/11/25(水) 00:35:59.72ID:WGqqylpJ
残された選択肢はQt、GTK+、Tcl/Tkあたりになるのか。。。
GTK+昔触ったことあるから思い出して使ってみるか。。。
0845ねこずきん
垢版 |
2015/11/26(木) 05:58:57.49ID:tASN5hyu
androidやChromeの様に独自ウインドウシステムつくるべし
0846デフォルトの名無しさん
垢版 |
2015/11/26(木) 08:22:44.38ID:dcxxprpp
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1448404407/-13
0850片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/11/30(月) 21:25:19.74ID:UQmO47jh
LaTeX以外でchm,html,pdfに変換できてハイクオリティな出版も可能な簡単な文書プロセッサってなあに?
0852 ◆tAo.kQ2STk
垢版 |
2015/12/01(火) 13:51:33.48ID:wfTLHpyu
>>850
PostScriptで関数(というかマクロ)を必要なだけ作ればTeXと同じことが出来るよ。
boxes-and-glue modelを理解してる事前提なのと、TeXは動的計画法で箱の配置を決定してるから
TeXと全く同じように出力するには少し骨を折る必要があるけど
やるだけの価値はある。

PostScriptはファイルの入出力もサポートしてるから、文書を読み取って内部データに変換して、
HTMLならHTML形式に変換するプログラムも書こうと思えば書けるし
PDFもASCIIコードの範囲内で(圧縮以外の)全ての機能が使えるから
PDF形式への変換プログラムも書こうと思えばPostScriptで書ける。

chmの形式は知らん。
0853 ◆tAo.kQ2STk
垢版 |
2015/12/01(火) 13:55:37.34ID:wfTLHpyu
可能か、否かの意味では可能って意味ならm4使ってhtmlやpdfを作るのも楽しいかも知れん・・・・・・。
0854デフォルトの名無しさん
垢版 |
2015/12/02(水) 00:30:25.26ID:4qQZZbn5
現実的にはDITAかな。
「ハイクオリティな出版」を求めるなら組版のチューニングで
相当頑張らないといけないけど。
0856デフォルトの名無しさん
垢版 |
2015/12/05(土) 12:45:00.11ID:AWNlkBec
>>852
さてはやったことないなw
PSですべて書くのは非効率。プロセッサ自体をPSで書く必要もない。
PSは飽くまで出力言語として使うだけであって 他のお手軽/お好みのscript言語で
書いたscriptにPSを吐かせるのが ここにいるUNIXersには普通のやりかただよ
0858 ◆tAo.kQ2STk
垢版 |
2015/12/05(土) 15:31:50.30ID:3X0n/q/1
>>856
やったことはあるでよ。
動的計画法じゃなくてfirst-fitで箱を詰めてく感じにしたけど。

> PSですべて書くのは非効率。プロセッサ自体をPSで書く必要もない。
> PSは飽くまで出力言語として使うだけであって 他のお手軽/お好みのscript言語で
> 書いたscriptにPSを吐かせるのが ここにいるUNIXersには普通のやりかただよ
完全に同意するよ。
LaTeX以外で、htmlやpdfなんかに変換できて(つまり何らかの出力として得ることが出来て)、
ハイクオリティな出版も可能で、文法が簡単で、
それ自体が文書プロセッサにもなってる言語としてPostScriptを挙げたって話だよ。
生のPostScriptを使いたくない?perlに吐かせりゃ良いんじゃない?
0860デフォルトの名無しさん
垢版 |
2015/12/17(木) 22:21:50.96ID:RFQK/sQs
質問が雑すぎ

ARMなどの他のアーキテクチャのバイナリや、
システムそのものもVirtualMachine介さずに動作するから
64/32bit間の差なんてそれを動かすためのライブラリで
HDDの容量食うのを気にするぐらい
0864デフォルトの名無しさん
垢版 |
2016/01/15(金) 19:04:43.93ID:kPzcSoAF
open(2)について
詳解UNIXプログラミングではfcntl.hをインクルードすることになっていますが
ぐぐった限りではsys/types.h, sys/stat.hもインクルードしなければならないようです
どちらが正しいのでしょうか
0867sage
垢版 |
2016/03/27(日) 21:54:03.49ID:w5ZDFKAh
仕事に関係する関連知識の取得のためにFreeBSDのNetwork周りのソースコードを読み始めたのですが、
bpfドライバのコードで躓きました。一応、いろいろググってみたのですが、、明確な回答を得ることができない次第です。

以下の関数bpf_buffer_append_bytesで利用されていないbpf_d構造体が引数として存在します。

void
bpf_buffer_append_bytes(struct bpf_d *d, caddr_t buf, u_int offset,
void *src, u_int len)
{
u_char *src_bytes;

src_bytes = (u_char *)src;
bcopy(src_bytes, buf + offset, len);
}

一例として、bpf_buffer_append_byteを例に出しましたが色々なとこで、利用しない引数を持つ関数や
マクロを確認しているのですが、どのような意図を狙っているか確認したいです。

想像している意図としては
1.他の*nixとの互換性のため
2.今後拡張していく際に利用していない引数が使われる予定である。
3.テストメソッドを作成する際にこの引数を利用する

となりますが、実際プログラマーとして勤めている方はこのような利用しない引数を取る関数を設計する際に
どのような狙いを持って作成しますか?

一般論レベルでも構わないので回答いただけると幸いです。

以上
よろしくお願いいたします。
0871デフォルトの名無しさん
垢版 |
2016/03/27(日) 23:28:03.24ID:X+SL8bpO
MFCでもそうだけど、利用しない引数は、コメントアウトしているのが普通

func(/* 引数 */)

まあ、ライブラリを作っていない人は、気にしなくてもよい
0874デフォルトの名無しさん
垢版 |
2016/03/28(月) 01:27:41.39ID:WGFAAxFb
POSIXなどの規格で、API仕様や標準ライブラリ関数が決まっていて、変えられないのかも
0875デフォルトの名無しさん
垢版 |
2016/03/28(月) 10:50:14.90ID:/+vK8YAf
>>867
自分なら2かなあ
そのstruct bpf_dみたいにほぼ全部の関数で使われるものは
エンハンスで参照するようになるかもしれないし、渡しておいて損はない
0877867
垢版 |
2016/03/29(火) 00:26:43.12ID:7osLNwaa
ご連絡遅くなり申し訳ありません。
867です。
みなさん回答ありがとうございました。
みなさんの回答でなんとなくイメージがついてきました。

>>868さん
すれ違いでしたでしょうか?
内部アーキテクチャに近いところはFreeBSD関連のスレッドで確認するようにいたします。

>>869,870,873さん
みなさんのアドバイスはほぼ同様の見解に見えました。
確かに関数ポインタ利用の場合、引数は統一しないといけないですよね。
関数ポインタという頭が無かったのですごく勉強になりました。if.cなどさらに上位を読み進めていく上でコール元を確認し、関数ポインタのためかどうか確認していきたいと思います。

>>871さん
これを調べる上でコンパイラによっては、利用しない引数であることを明示する拡張があることも判明しました。コメントアウトしていただければどれだけ楽だったことか。
ライブラリー作成者以外は気にしなくても良いというお言葉心強いです。
わからないことがあってもとりあえず、読み進めていく勇気をいただきました。

>> 874さん
別のマクロでも使われない引数を見ており、それはまさしく他の*nixでは利用するものでした。OSによって実装がここまで違うのかという視点を持てたのはすごく有意義な経験でした。何かに詰まった際には同名の関数が他のOSに存在しないのか確認することにします。

>>875さん
今後、自分でプログラムを書くときには参考にさせていただきます。普段、そこまで高い視点で自分が書くプログラムの設計はしないので勉強になりました。

>>876さん
叱咤をいただきありがとうございます。空気を読まず、これからも粘り強くコードを読んでいこうと思います。
嬲るというほど、自分の手になじむ日が来るか想像がつきませんがこの程度のレベルと言われない程度に成長していくよう頑張ります。また、僕の発言で気分を害されたようでしたら申し訳ありませんでした。

最後に、みなさん色々なご意見ありがとうございました。
これ以上の質問はすれ違いにもなりそうなので、自分自身で試行錯誤したいと思います。
0878デフォルトの名無しさん
垢版 |
2016/04/02(土) 12:00:52.43ID:thGUj6UI
>>867
thisだろ
0879片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2016/04/09(土) 15:38:46.81ID:1rUso06b
sedとbashを使って、特定のフォルダ内のファイル名とファイルの中身を
一括文字列置換したいんだが、どうやればいいんだろうか?
0880デフォルトの名無しさん
垢版 |
2016/04/10(日) 09:08:21.05ID:GJqGP9+Q
>>879
sedのネタ使うならls -1の出力をパイプで食わせて加工でbashスクリプトにしてbashに食わせるのが楽じゃないの?
でもオススメするのはpython,perl,rubyなんかで処理だと思うよ。
めちゃ古いシステムでpythonとか入ってないよ!っていうならawkでって選択肢もアリ。
0882デフォルトの名無しさん
垢版 |
2016/05/01(日) 16:11:13.46ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
14
0883デフォルトの名無しさん
垢版 |
2016/05/06(金) 03:11:17.13ID:FS8HTadE
ページサイズ取得について
sysconf()の引数として
_SC_PAGESIZE
_SC_PAGE_SIZE
の両方とも利用できるようです
これらはどちらを使うのが正規なのでしょうか?
0890デフォルトの名無しさん
垢版 |
2017/09/05(火) 14:50:56.93ID:Ol0Fklqi
「残っていたSolaris関連の従業員をほぼ全員レイオフした(中略)
レイオフが事実であれば完全に開発終了(中略)
SUN時代からSPARC/Solarisを推進してきたJohn Fowler氏の退社も報道されていた」

Oracle、Solaris関連の従業員をレイオフか | スラド
https://srad.jp/story/17/09/05/0456243/
2017年09月05日 14時34分
0892デフォルトの名無しさん
垢版 |
2017/11/15(水) 21:56:22.87ID:9k4pRhSA
ncursesw使ってるんですけど
mvaddstr(0, 0, "aあb");
move(0, 0);
ここでRIGHTキーを押すとカーソルが「あ」に移動しますが
もう一回押すとカーソルがbに移動せず「あ」の位置のままです。
これは「あ」がx座標の1と2を占領してるからカーソルが動いてないように見えるんですよね。
見たまんまカーソルキーを動かすにはどうやればいいですか?
■ このスレッドは過去ログ倉庫に格納されています

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