C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
前
http://mevius.5ch.net/test/read.cgi/tech/1509107288/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 144
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 838a-3nWA)
2017/12/23(土) 19:33:43.89ID:dghfoRy20717デフォルトの名無しさん (ワッチョイ ffe4-TMol)
2018/02/04(日) 18:21:03.27ID:F4VHcN9w0718デフォルトの名無しさん (アークセー Sxcb-/IWG)
2018/02/04(日) 22:32:58.82ID:ZlHMYtZlx 全くの初心者です。
「2の3乗を求める」という計算プログラムを勉強しています。
最終的には3^1024を求めたいのですが。
ネットで見ていると30乗ぐらいまではプログラムがあるのですが
1024乗ぐらいになると難易度的に難しくなるのでしょうか?
「2の3乗を求める」という計算プログラムを勉強しています。
最終的には3^1024を求めたいのですが。
ネットで見ていると30乗ぐらいまではプログラムがあるのですが
1024乗ぐらいになると難易度的に難しくなるのでしょうか?
719デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
2018/02/04(日) 22:50:53.35ID:9kHA/gVX0720片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-vcz1)
2018/02/04(日) 23:03:25.92ID:i7yJvuTcd 多倍長演算か、筆算するしかない。
721デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)
2018/02/04(日) 23:07:38.36ID:88eIJAAv0722デフォルトの名無しさん (ワッチョイ 9f0c-wbgk)
2018/02/04(日) 23:20:52.68ID:dMpklRXW0 DOSで4000桁の電卓つくるにはって考えてたことあったな。
>>718
自力でどうにか解決できたらプログラミングの力がつくよ、がんばって!
自力でどうにか解決できたらプログラミングの力がつくよ、がんばって!
724デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/05(月) 00:05:03.48ID:GuU0avOk0 >>718
GMPというフリーのライブラリを使えば3^1024は簡単に求まるぞ
GMPというフリーのライブラリを使えば3^1024は簡単に求まるぞ
725デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
2018/02/05(月) 00:05:41.82ID:atUOEIz80 BCD(二進化十進)ライブラリを拾ってくるのが汚れた大人だけど、
若者は勉強のためにBCDライブラリを作ってみては?
若者は勉強のためにBCDライブラリを作ってみては?
726デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
2018/02/05(月) 00:06:32.23ID:atUOEIz80 おっと、更新せずに書き込んだらこんなことに(笑)
>>725
10進の世界を前提に計算するのは、メリットがよくわからないんですが
10進の世界を前提に計算するのは、メリットがよくわからないんですが
728愛恥人
2018/02/05(月) 01:36:30.57 10進じゃないと0.1が無限に数字が続くらしい
よく分からんけど
よく分からんけど
730デフォルトの名無しさん (ワッチョイ 9f0c-wbgk)
2018/02/05(月) 01:40:54.20ID:cqMdaOnR0 効率よく2進値を10進表記するアルゴリズムが思いつくならメリット無いかもな。
731デフォルトの名無しさん (ワッチョイ 1781-hxSR)
2018/02/05(月) 01:47:14.45ID:zlSI53sS0 とりあえず質問者の意図にそって
多倍長整数演算と言うことに絞ろう
多倍長整数演算と言うことに絞ろう
732デフォルトの名無しさん (ワッチョイ ffea-C7gl)
2018/02/05(月) 08:31:52.64ID:QaNROXZC0 結果を可視化するときにBCDだと楽
733デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/05(月) 10:06:47.08ID:GuU0avOk0 16進ダンプしたとき読みやすい
それだけ
3増し符号とか使ってたやついる?
それだけ
3増し符号とか使ってたやついる?
734デフォルトの名無しさん (アウアウカー Sa2b-gGCH)
2018/02/05(月) 12:29:13.25ID:cbvE2oU2a 3進数なら歯切れの良い数なんだけどな・・・
735デフォルトの名無しさん (ワッチョイ 97a1-+DFt)
2018/02/05(月) 15:20:22.81ID:vN182Yvh0 >729
COBOLはBCDを使っているはず、
COBOLはBCDを使っているはず、
736デフォルトの名無しさん (ワッチョイ 179d-jn1r)
2018/02/05(月) 20:03:34.68ID:GlpP/XMd0 >すると、BCD の意義がよくわからないのです
科学技術計算は浮動小数点でいいが、リアルなお金の計算とかでは10進で計算するのがディフォールト
2進と10進では結果が大幅にちやうから。
ま俺の財産なら誤差0.1円くらいかもしれんが、、
科学技術計算は浮動小数点でいいが、リアルなお金の計算とかでは10進で計算するのがディフォールト
2進と10進では結果が大幅にちやうから。
ま俺の財産なら誤差0.1円くらいかもしれんが、、
737デフォルトの名無しさん (スップ Sd3f-qmJt)
2018/02/05(月) 21:30:58.83ID:jWi5SYZhd いま必死に考えてる
昔のCPUは絶対に持っていた機能だ
レジスタが8ビットだとすると、256以上のデータが表現できなくなるけど、そんなことはない
だから何か仕組みがあるはず
プログラマが勝手にこのビットが立ったら2の15乗だとか自由に決めて、8ビビットの重み付けをしてるんだとおもう
あとは計算と結果の表現次第だ
指数法則を使えばできそうだけど、これはなかなか面白い課題だね
昔のCPUは絶対に持っていた機能だ
レジスタが8ビットだとすると、256以上のデータが表現できなくなるけど、そんなことはない
だから何か仕組みがあるはず
プログラマが勝手にこのビットが立ったら2の15乗だとか自由に決めて、8ビビットの重み付けをしてるんだとおもう
あとは計算と結果の表現次第だ
指数法則を使えばできそうだけど、これはなかなか面白い課題だね
738愛恥人
2018/02/05(月) 21:36:06.47 ググれよw
739デフォルトの名無しさん (ワッチョイ 9f0c-wbgk)
2018/02/05(月) 21:47:00.70ID:cqMdaOnR0 ADD HL,BC
740デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
2018/02/05(月) 22:00:56.57ID:atUOEIz80 ゼッパチ(笑)
741デフォルトの名無しさん (ワッチョイ f7a7-iPrh)
2018/02/05(月) 22:04:10.39ID:/FiCbPih0 >>741
C で多桁長計算を記述するときは、キャリーフラグという便利なものが使えないので、いちいちマスクしたり、と苦労しますね
http://mevius.2ch.net/test/read.cgi/tech/1434079972/28
C で書かないほうが楽で記述量も少ないかもしれない
>>718 は初学者には無理かもしれません
C で多桁長計算を記述するときは、キャリーフラグという便利なものが使えないので、いちいちマスクしたり、と苦労しますね
http://mevius.2ch.net/test/read.cgi/tech/1434079972/28
C で書かないほうが楽で記述量も少ないかもしれない
>>718 は初学者には無理かもしれません
743デフォルトの名無しさん (ワッチョイ d7d2-VW3n)
2018/02/05(月) 22:15:51.73ID:bjLIcRum0 【有賀さつき(52)小林麻央(34)黒木奈々(32)】 世界教師 マイトLーヤ「早死には原発事故の隠蔽のせい」
http://rosie.5ch.net/test/read.cgi/liveplus/1517828233/l50
http://rosie.5ch.net/test/read.cgi/liveplus/1517828233/l50
744デフォルトの名無しさん (ワッチョイ 9fe1-pzKJ)
2018/02/05(月) 22:26:42.74ID:7nDvhhdf0 アセンブラだと当たり前のようにキャリーフラグを見るけど
高級言語だとキャリーフラグを活用してるのは皆無じゃないかと
思えてくるのが悲しい
高級言語だとキャリーフラグを活用してるのは皆無じゃないかと
思えてくるのが悲しい
745デフォルトの名無しさん (ワッチョイ 9fb3-mP5N)
2018/02/05(月) 22:57:52.16ID:BWargw5G0746デフォルトの名無しさん (スップ Sd3f-qmJt)
2018/02/05(月) 23:32:47.33ID:jWi5SYZhd I/Oがメモリにマッピングされてるんだから見れると思ってる
ぼくはそういうプログラミングがしたい
ぼくはそういうプログラミングがしたい
747デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
2018/02/05(月) 23:40:30.69ID:atUOEIz80 Reno版のカーネルのソース読んだとき、
VAXのHDDのドライバが分かりやすくてビビった。
メモリマップドI/Oだた。
VAXのHDDのドライバが分かりやすくてビビった。
メモリマップドI/Oだた。
748デフォルトの名無しさん (アウアウカー Sa2b-8kmj)
2018/02/06(火) 00:21:47.60ID:i0KhUh5Ha ここの人達ってOpaqueポインタとか使ってます?
749デフォルトの名無しさん (アークセー Sxcb-/IWG)
2018/02/06(火) 00:31:17.27ID:WaNrl6wPx とりあえず本買ってきて読んでいます。3月末ぐらいにはなんとか結果を出したい・・・
750デフォルトの名無しさん (アークセー Sxcb-/IWG)
2018/02/06(火) 00:37:33.65ID:WaNrl6wPx とりあえずプログラム初心者だが将来有望な頭脳をもった奴を
2人ほど用意した・・・。
2人ほど用意した・・・。
751デフォルトの名無しさん (ワッチョイ 179f-gGCH)
2018/02/06(火) 01:36:11.08ID:FVXSsnAc0752デフォルトの名無しさん (ワッチョイ 179f-gGCH)
2018/02/06(火) 01:43:46.77ID:FVXSsnAc0 >>748
滅多に使わない。
滅多に使わない。
753デフォルトの名無しさん
2018/02/06(火) 04:19:56.87 >>748
実ソースではvoidポインタしか見たことない
実ソースではvoidポインタしか見たことない
754デフォルトの名無しさん (エムゾネ FFbf-EZPO)
2018/02/06(火) 13:31:15.57ID:HnlXhHfVF 3進数用にBCD3を定義する
1桁を2進数2bitで表現して
最下位桁の次に2bitのエンドコード11を付与する
例えば
0=00 11
1=01 11
2=10 11
3=01 00 11
4=01 01 11
5=01 10 11
6=10 00 11
7=10 01 11
8=10 10 11
9=01 00 00 11
...
3^1024=01 00 00 ...(00 が1020個(左右に書いたもの含めると1024個))... 00 00 11
1桁を2進数2bitで表現して
最下位桁の次に2bitのエンドコード11を付与する
例えば
0=00 11
1=01 11
2=10 11
3=01 00 11
4=01 01 11
5=01 10 11
6=10 00 11
7=10 01 11
8=10 10 11
9=01 00 00 11
...
3^1024=01 00 00 ...(00 が1020個(左右に書いたもの含めると1024個))... 00 00 11
755デフォルトの名無しさん (ワッチョイ 9793-d/ts)
2018/02/06(火) 17:23:11.09ID:f2WbB5Mw0 >>754 議論の本質から逸れた混ぜ返しになるけど、
BCD が 二進化十進数 binary coded decimal の略なら、
3進数の場合は binary coded tricimal で BCT ではないかしら。
3進数が tricimal なのか、ちょいと自信がないけど、
とりあえずネット検索でヒットする言葉みたい。
BCD が 二進化十進数 binary coded decimal の略なら、
3進数の場合は binary coded tricimal で BCT ではないかしら。
3進数が tricimal なのか、ちょいと自信がないけど、
とりあえずネット検索でヒットする言葉みたい。
756デフォルトの名無しさん (JP 0Hab-465M)
2018/02/06(火) 17:37:36.42ID:vr+u4qHrH ternaryだよ
757デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 17:38:13.02ID:CtmFRYuD0 BiCMOS TTL compatible
758デフォルトの名無しさん (エムゾネ FFbf-EZPO)
2018/02/06(火) 17:46:17.35ID:b1TJyJggF >>755
BC3でいいよもう
BC3でいいよもう
759755 (ワッチョイ 9793-d/ts)
2018/02/06(火) 19:06:57.63ID:f2WbB5Mw0760デフォルトの名無しさん (ワッチョイ 57b3-iQWu)
2018/02/06(火) 19:11:28.74ID:Yrf3PZ3s0 取り締まり頑張ってね
761片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-vcz1)
2018/02/06(火) 19:38:09.83ID:c7ouIjcHd 取締役なのか、パトロールなのか。。。
762デフォルトの名無しさん (JP 0Hab-465M)
2018/02/06(火) 21:27:30.96ID:vr+u4qHrH tricimal→取り締まるかよ
763デフォルトの名無しさん (ササクッテロル Spcb-ysY+)
2018/02/06(火) 21:57:22.67ID:mQkuTV46p 最近のbooleanがヌルも扱えるから三進数?
764デフォルトの名無しさん (ブーイモ MMdb-465M)
2018/02/07(水) 00:06:04.12ID:9RlVVxZwM 従来のbooleanの変数が1個だけあっても、2進数とは呼ばんだろ。
765デフォルトの名無しさん (スップ Sdbf-Md37)
2018/02/07(水) 00:41:24.75ID:J2C0nRVPd それに当てはまるのは二値論理・三値論理だ
766デフォルトの名無しさん
2018/02/07(水) 07:37:48.03 2進数なら無駄なく表せるけど
struct {
bool b1:1;
bool b2:1;
bool b3:1;
bool b4:1;
bool b5:1;
bool b6:1;
bool b7:1;
bool b8:1;
}
3進数だと3バイトずつセットにしないと無駄なく表せないよね
3進数使うメリットあんの?
struct {
bool b1:1;
bool b2:1;
bool b3:1;
bool b4:1;
bool b5:1;
bool b6:1;
bool b7:1;
bool b8:1;
}
3進数だと3バイトずつセットにしないと無駄なく表せないよね
3進数使うメリットあんの?
767デフォルトの名無しさん (スップ Sd3f-qmJt)
2018/02/07(水) 08:20:31.75ID:cTCYWpamd 自然対数の底2.71828…により近い3進数の方が効率が良いっておばあちゃんが言ってた。
2進数なのは単に電気で表しやすいからだって。
2進数なのは単に電気で表しやすいからだって。
768デフォルトの名無しさん (ワッチョイ d78a-uppE)
2018/02/07(水) 08:24:31.98ID:nJAlkrj20 元の質問が3の累乗を求める問題だから3進数の方が単純化できるというだけのこと
769デフォルトの名無しさん (ワッチョイ d72b-Mu/V)
2018/02/07(水) 09:10:28.34ID:VNvdmR7o0770恥人
2018/02/07(水) 09:17:15.35 へえ、おもしろ
771デフォルトの名無しさん (アウアウエー Sadf-aShi)
2018/02/07(水) 17:13:09.38ID:mhmm9auua test
772デフォルトの名無しさん (スップ Sd3f-27VS)
2018/02/07(水) 17:58:56.36ID:jSJcfZwQd const char ○○とchar ○○について。
○○はフォルダ名。
後者ではエラー、前者ではエラーにならない場合何が考えられますか?
CとC++だと記述が違うとかあります?
○○はフォルダ名。
後者ではエラー、前者ではエラーにならない場合何が考えられますか?
CとC++だと記述が違うとかあります?
773デフォルトの名無しさん (ワッチョイ d78a-uppE)
2018/02/07(水) 18:21:27.23ID:nJAlkrj20 恐らく何らかの標準関数の引数にでもした時にエラーが発生したんだろうけど、具体的なことが分からないので何とも言えない
constについてはCとC++では微妙に扱いが違う
constについてはCとC++では微妙に扱いが違う
774デフォルトの名無しさん (ドコグロ MMdf-mP5N)
2018/02/07(水) 18:37:22.64ID:Rn2OhqN+M775デフォルトの名無しさん (ワッチョイ 97b3-C7gl)
2018/02/07(水) 18:37:42.61ID:I0UlpN+80 エラー発生箇所の最小のコードとエラー内容を張らないと憶測だらけに
776デフォルトの名無しさん (ワッチョイ 1781-hxSR)
2018/02/07(水) 18:42:33.73ID:IzVO5E4y0 >>774
0と正負で出来そうな気がする
0と正負で出来そうな気がする
777デフォルトの名無しさん (ワッチョイ 97b3-C7gl)
2018/02/07(水) 18:46:00.12ID:I0UlpN+80 HI/LO/ハイインピーダンス の 3ステート
778デフォルトの名無しさん (ドコグロ MMdf-mP5N)
2018/02/07(水) 19:13:13.49ID:Rn2OhqN+M779デフォルトの名無しさん (スップ Sdbf-9nxG)
2018/02/07(水) 19:16:14.19ID:pu3VMwXTd curl.exeをsystemコールするのだけど
その標準出力をバフに入れたり、バフの値を標準入力に入れたりするのってどうすればできるのだろう?
その標準出力をバフに入れたり、バフの値を標準入力に入れたりするのってどうすればできるのだろう?
780デフォルトの名無しさん (スップ Sdbf-9nxG)
2018/02/07(水) 19:17:04.25ID:pu3VMwXTd781デフォルトの名無しさん (ワッチョイ f79b-27VS)
2018/02/07(水) 19:40:09.15ID:v2LQurHa0782デフォルトの名無しさん (ワッチョイ 97b3-C7gl)
2018/02/07(水) 19:49:53.17ID:I0UlpN+80 const 無しのポインタ変数にリテラル文字列を与えると
C++だと (リテラル文字列の)指し先を書き換える気あるのかボケェ と警告やエラーになるですよ
Cは過去のコードの互換性の為に黙ってることが多い
(けどオプションで警告したりエラーにしたりするんだっけか?)
C++だと (リテラル文字列の)指し先を書き換える気あるのかボケェ と警告やエラーになるですよ
Cは過去のコードの互換性の為に黙ってることが多い
(けどオプションで警告したりエラーにしたりするんだっけか?)
783デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/07(水) 21:40:51.11ID:DHh/hU+x0 規格票読んでねえんだな
784デフォルトの名無しさん (ワッチョイ 57b3-wbgk)
2018/02/07(水) 22:29:07.83ID:MTpdY7NJ0 "!"!"!MOHYO!"!"!"2"
1.[[[HUn≒MUL=POSI≠MAHO+Set*HUGE=SAGE=LOGE=NOISIA=0≒1]]]
2-[[[[[[[E=RAT%2^10%SPELAn!%]&!TOWA&!PEG#!NOLNOL8!#!HYAGO!2#]1*2=1]U]S]0]O]!#PAL!
3--->PAGODOL7&!@17,2222734.15&[[[%%RENRAK6,9,99"^10"]#$11.2%}]KAIJ]{
41.2SSS = RALQI2.β{{{RA4,0,238^97,1,$.S.L.E.I.L."Q5352.15Q"JOL"5*3>>>41.3q}}}>1.2<0
.3φTALHOSI"0">>>105.10<1.235<1.2>51≠52===55.632>V="E=0.835"of"1.32","632",0.683,1.end
{
1.[[[HUn≒MUL=POSI≠MAHO+Set*HUGE=SAGE=LOGE=NOISIA=0≒1]]]
2-[[[[[[[E=RAT%2^10%SPELAn!%]&!TOWA&!PEG#!NOLNOL8!#!HYAGO!2#]1*2=1]U]S]0]O]!#PAL!
3--->PAGODOL7&!@17,2222734.15&[[[%%RENRAK6,9,99"^10"]#$11.2%}]KAIJ]{
41.2SSS = RALQI2.β{{{RA4,0,238^97,1,$.S.L.E.I.L."Q5352.15Q"JOL"5*3>>>41.3q}}}>1.2<0
.3φTALHOSI"0">>>105.10<1.235<1.2>51≠52===55.632>V="E=0.835"of"1.32","632",0.683,1.end
{
785デフォルトの名無しさん (ワッチョイ 9fe3-+DFt)
2018/02/07(水) 22:54:26.24ID:9NswO6iD0786デフォルトの名無しさん (ワッチョイ 2e80-2I1n)
2018/02/08(木) 02:47:50.39ID:31uXy/SD0 >>779-780
Rubyではパイプラインで、サブプロセスを実行し、結果を受け取れる。
例えば下は、メモ帳の実行ファイルの場所を探す
resText = ""
IO.popen("where notepad") { |io| resText = io.read }
puts resText
出力結果
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
Rubyではパイプラインで、サブプロセスを実行し、結果を受け取れる。
例えば下は、メモ帳の実行ファイルの場所を探す
resText = ""
IO.popen("where notepad") { |io| resText = io.read }
puts resText
出力結果
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
787786 (ワッチョイ 2e80-2I1n)
2018/02/08(木) 03:57:59.54ID:31uXy/SD0 >>779-780
Rubyではパイプラインで、サブプロセスを実行し、結果を受け取れる。
これで、サイトのHTML が取れる
resText = ""
IO.popen("curl サイトのURL") { |io| resText = io.read }
puts "終了ステータス : #{$?}", resText
Rubyではパイプラインで、サブプロセスを実行し、結果を受け取れる。
これで、サイトのHTML が取れる
resText = ""
IO.popen("curl サイトのURL") { |io| resText = io.read }
puts "終了ステータス : #{$?}", resText
788デフォルトの名無しさん (ワッチョイ 319f-R9JW)
2018/02/08(木) 04:04:45.98ID:FQ2Hecmn0 >>779
system()ではなくpopen()使うと楽だ。
system()ではなくpopen()使うと楽だ。
789デフォルトの名無しさん (ワッチョイ c68a-Rwrx)
2018/02/08(木) 07:36:30.89ID:CSlRHtTo0790デフォルトの名無しさん (ドコグロ MM75-/0XS)
2018/02/08(木) 07:46:17.37ID:kaQtkM8+M curl.exe を Linux で?
こりゃ触っちゃダメな人だな
こりゃ触っちゃダメな人だな
791デフォルトの名無しさん (ワッチョイ 2e80-2I1n)
2018/02/08(木) 07:57:31.83ID:31uXy/SD0 Linux なら、curl はコマンドである。
環境変数PATH も通っている
which curl で、
/usr/bin/curl
>>787
これは、Windows10 のWSL 上の、Ubuntu 16.04 で、Ruby で実行したもの
環境変数PATH も通っている
which curl で、
/usr/bin/curl
>>787
これは、Windows10 のWSL 上の、Ubuntu 16.04 で、Ruby で実行したもの
792デフォルトの名無しさん (スップ Sdc2-Rwrx)
2018/02/08(木) 08:12:52.25ID:JMUgsKdMd793デフォルトの名無しさん (ワッチョイ 4193-jcwv)
2018/02/08(木) 08:29:27.70ID:Mx6kxOEl0794デフォルトの名無しさん (スップ Sdc2-Rwrx)
2018/02/08(木) 08:33:32.64ID:JMUgsKdMd795デフォルトの名無しさん (ワッチョイ 4193-jcwv)
2018/02/08(木) 09:24:02.21ID:Mx6kxOEl0 #include <unistd.h>
#include <stdio.h>
int main() {
int pp[2];
pid_t pid;
pipe(pp); // パイプを生成 (エラーチェック略)
pid = fork(); // プロセスを複製 (エラーチェック略)
if (pid > 0) {
// 親プロセス: 子プロセスから情報を受け取る
close(0); // 標準入力のディスクリプタを閉じる
dup(pp[0]); // パイプの入力を標準入力に複製
close(pp[0]); // パイプの入力を閉じる
close(pp[1]); // パイプの出力側は使わない
char buf[1024];
int nbytes = read(0, buf, sizeof(buf)); // 子プロセスからのデータ受け取り
printf("[%*s]\n", nbytes, buf); // 受け取ったデータの確認
} else {
// 子プロセス: 外部コマンドを呼び出し、標準出力経由で親プロセスに送る
char *cmds[] = { "/usr/bin/echo", "hello, darling", NULL }; // ダミーの外部コマンド
close(1); // 標準出力のディスクリプタを閉じる
dup(pp[1]); // パイプの出力を標準出力に複製
close(pp[1]); // パイプの出力を閉じる
close(pp[0]); // パイプの入力側は使わない
// 外部コマンドの呼び出し (エラーチェック略)
execv(*cmds, cmds);
}
return 0;
}
#include <stdio.h>
int main() {
int pp[2];
pid_t pid;
pipe(pp); // パイプを生成 (エラーチェック略)
pid = fork(); // プロセスを複製 (エラーチェック略)
if (pid > 0) {
// 親プロセス: 子プロセスから情報を受け取る
close(0); // 標準入力のディスクリプタを閉じる
dup(pp[0]); // パイプの入力を標準入力に複製
close(pp[0]); // パイプの入力を閉じる
close(pp[1]); // パイプの出力側は使わない
char buf[1024];
int nbytes = read(0, buf, sizeof(buf)); // 子プロセスからのデータ受け取り
printf("[%*s]\n", nbytes, buf); // 受け取ったデータの確認
} else {
// 子プロセス: 外部コマンドを呼び出し、標準出力経由で親プロセスに送る
char *cmds[] = { "/usr/bin/echo", "hello, darling", NULL }; // ダミーの外部コマンド
close(1); // 標準出力のディスクリプタを閉じる
dup(pp[1]); // パイプの出力を標準出力に複製
close(pp[1]); // パイプの出力を閉じる
close(pp[0]); // パイプの入力側は使わない
// 外部コマンドの呼び出し (エラーチェック略)
execv(*cmds, cmds);
}
return 0;
}
796デフォルトの名無しさん (アウアウカー Sa69-OLJ2)
2018/02/08(木) 09:25:00.98ID:Bk9SeRO9a 自分で fork, exec するなら pipe() 作って dup() で繋げ。
やり方はUNIXやLinuxのシステムコールに関する入門書みたいなのがあれば必ず書いてあると思うのでそういうのを見るか、またはググれば世界中で解説やサンプルプログラムが見つかると思う。
かなり基本的な事だ。
やり方はUNIXやLinuxのシステムコールに関する入門書みたいなのがあれば必ず書いてあると思うのでそういうのを見るか、またはググれば世界中で解説やサンプルプログラムが見つかると思う。
かなり基本的な事だ。
797795 (ワッチョイ 4193-jcwv)
2018/02/08(木) 09:25:52.35ID:Mx6kxOEl0 急造のデッチ上げだけど、こんな感じかな。
要点は、名前なしパイプを作って標準入出力と差し替える。
外部コマンドの標準出力はパイプを通って出ていく、
呼び出した側は標準入力を読むとパイプから入ってくる。
32行制限に収めるために行が詰めたら見にくいね。
要点は、名前なしパイプを作って標準入出力と差し替える。
外部コマンドの標準出力はパイプを通って出ていく、
呼び出した側は標準入力を読むとパイプから入ってくる。
32行制限に収めるために行が詰めたら見にくいね。
798デフォルトの名無しさん (アウアウカー Sa69-OLJ2)
2018/02/08(木) 09:26:09.44ID:Bk9SeRO9a などと書いている最中に真上にサンプルプログラム出現w
799デフォルトの名無しさん (ワッチョイ 42a1-HQKA)
2018/02/08(木) 11:52:39.29ID:ZE8Ol0Sg0 curlだったら、オプションで全部ファイルに書き出せるじゃないか
800デフォルトの名無しさん (ワッチョイ 4193-jcwv)
2018/02/08(木) 12:29:54.84ID:Mx6kxOEl0 親プロセス側は標準入力をパイプに差し替える必要ないね。
パイプのディスクリプタから素直に読みゃいいんだわ。
// close(0); // (不要)標準入力のディスクリプタを閉じる
// dup(pp[0]); // (不要)パイプの入力を標準入力に複製
// close(pp[0]); // パイプの入力側はまだ閉じちゃダメ!
close(pp[1]); // パイプの出力側は使わない
// int nbytes = read(0, buf, sizeof(buf)); // (変更)
int nbytes = read(pp[0], buf, sizeof(buf)); // 子プロセスからのデータ受け取り
close(pp[0]); // 使用済みパイプの入力を閉じる
パイプのディスクリプタから素直に読みゃいいんだわ。
// close(0); // (不要)標準入力のディスクリプタを閉じる
// dup(pp[0]); // (不要)パイプの入力を標準入力に複製
// close(pp[0]); // パイプの入力側はまだ閉じちゃダメ!
close(pp[1]); // パイプの出力側は使わない
// int nbytes = read(0, buf, sizeof(buf)); // (変更)
int nbytes = read(pp[0], buf, sizeof(buf)); // 子プロセスからのデータ受け取り
close(pp[0]); // 使用済みパイプの入力を閉じる
801デフォルトの名無しさん (ワッチョイ 99b3-H5sa)
2018/02/08(木) 18:13:43.55ID:GCWLssPX0802デフォルトの名無しさん (アウアウカー Sa69-DUI6)
2018/02/08(木) 18:39:44.85ID:Z1lo1am9a803デフォルトの名無しさん (ワッチョイ d123-jA6l)
2018/02/08(木) 22:11:08.17ID:6pPoEzd60804愛恥人
2018/02/08(木) 22:40:11.36 消えてる(>_<)
805愛恥人
2018/02/08(木) 22:50:04.00 転載見つけた(´・ω・`)
https://0xacab.org/sizeofcat/iBoot
https://0xacab.org/sizeofcat/iBoot
806デフォルトの名無しさん (ワッチョイ eda7-3W2a)
2018/02/08(木) 23:02:55.43ID:H9Fqva5B0 流出どころかAppleがそもそも堂々と公開してるじゃないか
807恥人
2018/02/08(木) 23:03:59.16 どういう意味?(´・ω・`)
808デフォルトの名無しさん
2018/02/08(木) 23:13:56.52809恥人
2018/02/08(木) 23:17:16.32 >>808
OSのソースコードはないじゃん(´・ω・`)
OSのソースコードはないじゃん(´・ω・`)
810デフォルトの名無しさん
2018/02/08(木) 23:51:25.87811恥人
2018/02/08(木) 23:57:44.62 >>810
気づかなかった(´・ω・`)
気づかなかった(´・ω・`)
812デフォルトの名無しさん (アウアウエー Sa4a-3MxQ)
2018/02/09(金) 07:05:34.33ID:h2mjWzgva 恥を知れ
813デフォルトの名無しさん (アウアウウー Saa5-jA6l)
2018/02/09(金) 09:24:17.05ID:blkSiMpha (*^-^*)
814デフォルトの名無しさん (ササクッテロル Spf1-cOd3)
2018/02/09(金) 10:53:50.70ID:oBTDEK03p まあ、ライセンスが必要な部分は非公開なんだけどね。
815デフォルトの名無しさん (ワッチョイ 4193-rNjp)
2018/02/09(金) 21:20:19.26ID:BFrn0IJr0 処理が進んでくにつれてエラー処理のif文の中身が増えていくのをどうにかしたいんだがいい方法ない?
816デフォルトの名無しさん (アウアウカー Sa69-YiuZ)
2018/02/09(金) 21:27:57.36ID:dkdviptMa >>815
エラー時に行う定型的な処理の塊を関数化するのではいかんの?
エラー時に行う定型的な処理の塊を関数化するのではいかんの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市内閣、支持率横ばい75% (日経・テレ東 世論調査) ★2 [少考さん★]
- 【調査】クレジットカード、1人何枚持つのが「平均的」?★2 [ひぃぃ★]
- 松岡昌宏「僕、麻酔が一切効かない人間なんですよ」「だからお酒強いんですって」レアな体質を告白 [muffin★]
- グレタさんがイタリアで演説 [少考さん★]
- 【作家】高市総理支持の背景に見えるヤンキー的「ケンカ上等!」と「日本人は特別だ」感がとても怖い 北原みのり [少考さん★]
- YOASOBI、日本人アーティスト初のアジア10大ドーム&スタジアムツアー開催 [muffin★]
- 【U-NEXT】プレミアリーグ総合 ★38
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1814
- ハム専 エスコン日韓OB戦
- 競輪実況★1615
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1813
- 【D専】 ★2
- フィフィ「「歌唱強制中断」騒動、この時期に中国でライブ公演しようとするアーティストの方にも問題があるのでは?」 [377482965]
- 【実況】わため!!!のえちえちラムベガス(こよりあり?)🐏🧪
- まったり進行おじゃる丸待機ハウス🏡
- 【悲報】ホロライブ、派閥のせいで終了してしまう
- 🏡🌊💥👊😅👊💥🌊🏡
- 【悲報】アメリカ「ジャップさあ、何で5000万円も持ってない貧乏人からも相続税を巻き上げてるんだい?」 [616817505]
