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 ;
2012/02/09(木) 00:30:27.29
名前付きを使いたいのはスレッド間ではないです
2012/02/09(木) 00:37:06.84
forkすればファイルディスクリプタは複製されるし、全く別のプロセスに
ソケットを使ってファイルディスクリプタを送信することもできたはず

というかその用途ならソケットで通信すればいいのでは?
2012/02/09(木) 00:39:23.33
> プロセス間通信で使う、名前付きFIFOをPスレッド間で使うことは可能でしょうか?
> 名前付きを使いたいのはスレッド間ではないです
どっちが本当?
2012/02/09(木) 00:47:02.99
下が本当です


上はうっかりミスで、
「プロセス間通信で使う、パイプをPスレッド間で使うことは可能でしょうか?」
が意図したQでした。

よって、想定しているシチュエーションは2つあったわけです。
1. スレッド間でパイプ使用
2. (プロセス間の)FIFOのユニークな名前の自動生成
2012/02/09(木) 00:50:14.29
できればプロセス間でも親子関係とか持たせてパイプにする方がいいような。
どうせユニークな名前をどうにかして相手に伝えないといけないんでしょ。
2012/02/09(木) 00:56:05.42
パイプでつなぎたい先のプロセスは、独立した実行ファイルによるものですので
2012/02/09(木) 00:56:56.90
forkしてパイプ準備してからexecすればいいのでは
2012/02/09(木) 01:03:48.90
寝ぼけてました・・・
全く、そのような方法でやろうと自分でも考えていました。
2012/02/09(木) 01:12:26.89
書き込む前に一度読み直して人に伝わるかどうか位確認しろw
結局>>240の提示した方法で実現できそうな話だったんだな?
2012/02/09(木) 06:14:23.72
パイプの名前は?
2012/02/09(木) 11:21:57.81
>>243
ズシオ
2012/02/09(木) 13:40:45.86
SIGPIPEウゼエって時は、
int result = send( fd , buffer ,size , MSG_NOSIGNAL);
ってやり方もある。OSとfiletypeを選ぶけども。
2012/02/09(木) 18:25:23.87
SIGPIPEなんて速攻でIGNOREしてたわ
2012/02/09(木) 19:24:31.48
解決した後で聞かれもしてない事(しかも大した情報量がない)を
ドヤ顔で言い出す奴ってかなり恥ずかしい。
2012/02/09(木) 22:59:21.62
ためになるからイナフだ
2012/02/10(金) 12:53:22.71
>>247は可哀想。
250デフォルトの名無しさん
垢版 |
2012/02/10(金) 20:19:25.23
system()がダメでexec*()じゃなければならない場合って具体的にどういう使いどころですかね?
2012/02/10(金) 20:30:04.86
・forkした後にあれしたりこれしたり
・login shellに左右されたくないコマンドライン
2012/02/10(金) 21:47:45.05
すいません・・・
そこをもう一声具体的に・・・悲
2012/02/10(金) 21:53:36.60
自分とパイプで繋がった子プロセス内で外部のプログラムを実行できたりとか
2012/02/10(金) 22:01:58.79
コマンドラインとして渡す文字列(の一部)が文字列としてプログラム外からやってくる時。
2012/02/10(金) 22:11:03.48
>>253
これは、なるほど!
実際試してみます

>>254
      ___   ━┓  ___    ━┓
     / ―  \  ┏┛/ ―\   ┏┛
    /  (●)  \ヽ ・. /ノ  (●)\  ・
  /   (⌒  (●) /. | (●)   ⌒)\
  /      ̄ヽ__) /   |   (__ノ ̄  |
/´     ___/     \        /
|        \          \     _ノ
|        |          /´     `\
2012/02/10(金) 22:16:24.42
fork+execとsystemの違いってなんですか、ならわかるけど
forkとsystemの違いってなんですか、だと根本的に勘違いしてるだろうからman読んだほうがいいよ
2012/02/10(金) 22:19:18.11
こんな>>255態度で返す奴ってなんなの?
2012/02/10(金) 22:26:11.92
「シェルを通すか通さないか」という言葉ぐらいは知ってるんですが、
じゃあ、使い分けが必要なのは具体的にどういう箇所で?となると
わかっている人に教わったほうが間違いがないかと思ったものですから・・・謝
2012/02/10(金) 22:32:43.19
言い訳だけしてまともに謝る事すらできないのか
人間のクズだな
2012/02/10(金) 22:40:55.98
ごめんなない
2012/02/10(金) 22:51:07.88
誠意を見せたかったらどうするのかわからないのか?
教えてやろう。画像を貼るんだよ。
2012/02/10(金) 23:12:37.26
http://www.youtube.com/watch?v=xISG4nGTQYE

いかがでしょうか?
2012/02/11(土) 00:25:56.53
systemとexecじゃできることが違いすぎて何を聞きたいのかが不明過ぎる
2012/02/11(土) 00:34:15.31
はったりはやめなよ
2012/02/11(土) 00:42:24.53
UNIX勉強しろよ
2012/02/11(土) 00:53:47.37
薀蓄自慢したい人ですかね?
267デフォルトの名無しさん
垢版 |
2012/02/11(土) 11:43:52.95
>>263
別プロセスを生成させる以外になにか大きな使い方の差があるのでしょうか?
2012/02/11(土) 11:48:54.36
>>267
シェルがあるかないか も超重要じゃね?
2012/02/11(土) 11:50:30.76
>>267
・systemは1)プロセスを生成して、2)別バイナリを実行する。
1と2の間にいろいろできる。(パイプでつなぐ、資格情報の制御、リソースの制限などなど)
・systemはshに実行させる。shの機能(リダイレクトとか)が使える反面、セキュリティ上の問題を起こしやすい。
2012/02/11(土) 12:25:17.58
>>264,266,267
やるきねーだろ
2012/02/11(土) 16:31:24.52
やる気はあります!
レスが付くまで全裸で待機していましたし
2012/02/11(土) 16:39:39.91
全裸待機する暇があったらman 3 system; man 3 exec
2012/02/11(土) 16:49:39.39
らめえぇぇぇぇぇぇぇ

システムのページサイズを超えてかきこまないでぇぇぇぇ
あたしまだバージョン 2.6.11 より前なのにぃぃぃぃぃ


みたいな
2012/02/11(土) 17:31:53.25
Linux板でも逝け
2012/02/11(土) 20:16:56.46
あそこは管理系の薀蓄でブヒってるのが多いからなんとなくイヤ
「お前が管理しているそのツールのこの機能はどうやって作るのか」
という質問には答えてくれなそう
2012/02/11(土) 21:06:14.73
>>275
> 「お前が管理しているそのツールのこの機能はどうやって作るのか」

何言っているかよくわかりませんw
2012/02/11(土) 22:19:30.22
詳解UNIXプログラミング
UNIXカーネルの設計
を読み終わったらまたいらっしゃい
2012/02/11(土) 22:38:19.99
そしてだれもいなくなった(未完)
2012/02/11(土) 22:48:13.34
嵐の番組ってCMが生理用品ばっかでワロス
2012/02/11(土) 23:10:22.97
>>278
まだまだ
2012/02/11(土) 23:58:08.93
>>277
>詳解UNIXプログラミング
棚から引っ張り出して眺めているが、内容が古くて実用に注意を要する
もっと新しいの同等品を教えろ
2012/02/12(日) 00:18:42.76
2/eが出てるよ
2012/02/12(日) 00:38:58.73
違いを意識したことないが、その手の本でPOSIX 2008に対応してるのってあるの?
2012/02/12(日) 01:04:05.10
思いあたるのはこれ
http://www.man7.org/tlpi/tlpi_in_detail.html
2012/02/12(日) 01:50:48.07
>>284
表紙キモ!!!!!!
陰嚢の皺を無数の虱に這い回られているような気持ち悪さだ
2012/02/12(日) 02:04:12.95
旨そうなゼンマイだと思ったのにw

>>284
へーLinuxか。2008の機能も実装してたのか。この辺りの各OSごとの実装状況はまるで分からんが、
実装されているならマニュアルもあるだろうからそっちから調べるのもありだな。ありがとう
2012/02/12(日) 04:11:48.67
>実装されているならマニュアルもあるだろう

(;゚ Д゚) …!?
(つд⊂)ゴシゴシ
2012/02/12(日) 10:22:03.92
http://man7.org/tlpi/translations/index.html
> Japanese O'Reilly Japan Announced (Q2 2011).
> Publication likely in second half of 2012.

絶対出ないと思ってたのに
今の日オラにこんな根性があるとは思わなかった
2012/02/12(日) 19:24:06.62
また半端な翻訳かまして、後が出ないよ糞詰まり状態に1000ペリカ
2012/02/12(日) 20:04:02.50
>>288
ポチってしまった俺は、訳本が出る前に完読してやろうと心に誓うのであった
2012/02/12(日) 22:26:02.57
出版元のサイトからPDFつきが70$で買えるけど(ディスカウントクーポン使用)
もしAmazonでポチってたら強く生きてくれ
292290
垢版 |
2012/02/13(月) 21:39:17.18
なんじゃこの箱枕は!!!!!
('A`)
293デフォルトの名無しさん
垢版 |
2012/02/14(火) 07:55:05.11
UNIXのインダイレクションについてレポートにまとめろとかいわれたんだけどUNIXとインダイレクションって
なんか関係あったっけ?
2012/02/14(火) 08:22:51.30
リダイレクションの聞き間違いだろ。
2012/02/14(火) 12:40:18.10
>>293
せっかくだからそのままインダイレクションでレポート書いちゃえ
2012/02/18(土) 03:02:26.53
fork + execlpしたプログラムに引数でstruct構造体を渡すことってできますか?
2012/02/18(土) 03:03:51.11
馬鹿には無理
2012/02/18(土) 03:50:08.03
勉強しなおします
2012/02/18(土) 05:33:46.00
構造体の中身を全部文字列に直して、引数で渡して、その文字列から構造体を作り直せばいいよ
2012/02/18(土) 09:35:31.88
mmapした領域にコピーしとく、ファイルディスクリプタはそのまま
継承されるから、子プロセスでmmapすりゃいい。
301デフォルトの名無しさん
垢版 |
2012/02/18(土) 21:05:03.13
テキストファイルを実行ファイルの一部としてくっつけておいて
実行時にそれを普通のファイルみたいにopen/read/writeすることは可能でしょうか?
2012/02/18(土) 21:13:51.06
実行するユーザがread, write権限もってりゃできる。
そういうユーザーは実行ファイルを壊すことも、悪質なプログラムに
中身をすり替える事も可能になる。
2012/02/18(土) 21:48:35.70
で、どうやって?
2012/02/18(土) 21:59:22.91
自分が入ってたファイルを書き込みモードでオープンできるかどうかは、
ファイルシステムに拠るんじゃないかな。
パーミッション的にOKだったとしても。
2012/02/18(土) 22:01:55.04
ファイルシステムじゃなくてOSに拠るのかも。
とりあえずbsd系では平気そうだけどlinuxでは無理だよね。
2012/02/18(土) 22:26:29.07
Solarisなんかも書き込みはアウト。
Text file is busyになる。
BSDもダメなはずだが…

一つの実行ファイルを配布して、それを実行しながら書き換えようってのは無理。
Mac OS Xならリソースフォークを書き換えればいいが。
2012/02/18(土) 22:33:01.16
>>306
BSDは手元にないからわからないけど、OS Xは書き込めるよ。
2012/02/19(日) 01:26:23.23
forkしたあとなら出来る?
2012/02/19(日) 01:36:19.24
textをbusyにしているプロセスが2つに増えるだけ。
2012/02/19(日) 01:48:39.19
BSDとかMachの仮想記憶だと、同じページをマップしてても書き換えたらコピーが作られるんじゃないの?
だからOS Xは書き込める。

2012/02/19(日) 01:55:39.11
それはどのUNIXでも同じ。
ただし書き換えられるのはデータ領域。
実行ファイルが書き換えられるわけじゃない。

Mac OS X(Darwin)は同一ファイル内のリソースフォークを書き換える必要があるから、
HFS+のファイルはそう扱ってる。UFS(今はもうないが)上だと違う。
2012/02/19(日) 02:02:29.64
ああそうなんだ。OS Xでもファイルシステム依存なのね。
2012/02/19(日) 04:12:08.40
最終的に変更されたバイナリが残ればいいのなら、プログラム起動時にどこかにコピーを作ってそれで上書きすれば
その上書きした方に対して自由に読み書きできると思うんだが、いろいろ怖い
314デフォルトの名無しさん
垢版 |
2012/02/19(日) 04:22:57.33
おまえらautoconfわかる?
これでx86プロセッサーのコア数を確認するマクロあったら教えてくれ。

http://www.gnu.org/software/autoconf-archive/The-Macros.html#The-Macros
ここに有志が書いたマクロについてのマニュアルがあるから、探してくれ。
誰か英語が得意な奴よろ。

もし無いなら誰かm4マクロでx86プロセッサーのコア数確認のマクロ書いてくれ。
これCPUの資料な。
たぶんアセンブラの命令とかで調べられるはずだから、
ここ読めばどっかに載ってるから。よろ。
http://download.intel.com/jp/developer/jpdoc/Processor_Identification_071405_i.pdf

http://download.intel.com/jp/developer/jpdoc/248966-024JA.pdf
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Online_i.pdf
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2A_i.pdf
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2B_i.pdf
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol3_i.pdf
315314
垢版 |
2012/02/19(日) 04:25:44.64
やっぱいいわ、
見つかったわ
http://www.gnu.org/software/autoconf-archive/ax_count_cpus.html#ax_count_cpus

じゃあの
316デフォルトの名無しさん
垢版 |
2012/02/19(日) 08:45:12.06
同じ問題で、画像データやアイコンデータなんかはどうやって管理しているの?
2012/02/19(日) 09:29:28.41
なにが?
2012/02/19(日) 10:27:43.92
>>316
パッケージ化して配布。
Macだってリモートファイルシステムではリソースフォークをうまく管理できないので、
buldleにして配布することが推奨されてる。
2012/02/19(日) 10:43:27.62
リードオンリーなら別の問題だ。実行ファイルに埋め込む場合もある。
2012/02/19(日) 12:29:42.23
実行ファイルに埋め込んだ場合、「どこにあるか」を知らないと読み出しできないではないか・・・
すんません、そういう関数や手順があるなら教えてください
一般的なLinuxでgcc|g++を想定しての話です
2012/02/19(日) 12:35:41.80
読むだけならデータ化すればいいだけだろ。xpmみたいに。
2012/02/19(日) 12:44:08.98
>>320
GNU ldなら
ld -r -b binary -o foo.o foo.jpg
でfoo.jpgをオブジェクトファイルにすることができる。
nm foo.oすりゃわかるが、_binary_foo_start、_binary_end_start
というシンボルが定義される。
このオブジェクトファイルを普通にリンクすれば直にアクセスできる。
リードする必要すらない。
2012/02/19(日) 12:45:22.01
おっと
× _binary_foo_start、_binary_end_start
○ _binary_foo_start、_binary_foo_end
2012/02/19(日) 12:46:13.97
それをどうやって、(その画像データを読むプログラムの)実行ファイルにくっつけるの?
まさか、異様に長い配列を?・・・・て、静的データを置く領域が足りなくて無理だし
2012/02/19(日) 12:47:30.16
>>324は、>>321へのQ
2012/02/19(日) 12:50:51.17
別のファイルにしろ
2012/02/19(日) 12:55:13.43
いやだ!
2012/02/19(日) 12:56:29.98
>>322
>>323
どうもありがとうございます
仕事場のマシンで実験してみます
2012/02/20(月) 08:52:20.58
>>324,328
データサイズ的には>>321と同じだぞ。
> 静的データを置く領域が足りなくて無理だし
なら、>>322も置けないという事にかわりはない。
2012/02/20(月) 10:20:53.72
>>322
そういえばMac OS Xのバイナリにはアイコン用のセグメントってのが定義されてる。
今は有効かどうかわからないが、大昔のNeXTの頃はそこにアプリのアイコン画像を
保存していた。
331デフォルトの名無しさん
垢版 |
2012/02/20(月) 18:05:11.00
unixでdllのような動的ライブラリーはありますか?
どうやって作ればいいですか
2012/02/20(月) 18:11:55.71
>>331
なんで「unix 動的ライブラリ」でググらないの?
2012/02/20(月) 18:41:49.66
組み込みとかだとサポートしてないアーキテクチャとかあるんかね。8bitMMUなしとか動くUnixが無いか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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