UNIXプログラミング質問すれ Part8
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001970
2006/05/18(木) 18:56:16前スレ
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
0002970
2006/05/18(木) 18:58:40Cygwin使っている人いますか? その14 (UNIX板)
http://pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
http://pc8.2ch.net/test/read.cgi/win/1090131123/
ネットワークプログラミング相談室 Port13
http://pc8.2ch.net/test/read.cgi/tech/1109793931/
マルチスレッドプログラミング相談室 その3
http://pc8.2ch.net/test/read.cgi/tech/1098268137/
プログラミング質問すれ Part1(Unix板)
http://pc8.2ch.net/test/read.cgi/unix/1127388574/
XWindowプログラミング 質問箱
http://pc8.2ch.net/test/read.cgi/tech/1127340315/
関連板
http://pc8.2ch.net/unix/
http://pc8.2ch.net/linux/
0003970
2006/05/18(木) 19:00:56The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
http://www.opengroup.org/onlinepubs/009695399/toc.htm
【必読書】
Advanced Programming in the UNIX(R) Environment
http://www.amazon.com/exec/obidos/tg/detail/-/0201563177/
Unix Network Programming
Vol. 1: The Sockets Networking API, Third Edition
http://www.amazon.com/exec/obidos/tg/detail/-/0131411551/
UNIX Network Programming
Volume 2: Interprocess Communications (2nd Edition)
http://www.amazon.com/exec/obidos/tg/detail/-/0130810819/
man on www
http://www.linux.or.jp/JM/#Search
GNU Make 日本語リファレンス
http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html
Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html
0004デフォルトの名無しさん
2006/05/18(木) 19:57:54乙
0005デフォルトの名無しさん
2006/05/18(木) 20:03:080006デフォルトの名無しさん
2006/05/18(木) 22:03:460007デフォルトの名無しさん
2006/05/18(木) 22:08:010008sage
2006/05/19(金) 01:56:58http://www.kegel.com/c10k.html
0009デフォルトの名無しさん
2006/05/19(金) 02:04:130010デフォルトの名無しさん
2006/05/23(火) 10:04:49ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
http://www.amazon.co.jp/exec/obidos/ASIN/4797328355/
Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべて
http://www.amazon.co.jp/exec/obidos/ASIN/4797308192/
0011デフォルトの名無しさん
2006/05/26(金) 01:07:40ついつい、排他処理をさぼっていました。同期しない排他処理をするなら
spin_lock()
write_log()
spin_unlock()
こんな感じでOKですよね?
0012デフォルトの名無しさん
2006/05/26(金) 06:33:350013デフォルトの名無しさん
2006/05/27(土) 01:22:54吐かせたいんですけどこうゆう場合の実装ってどうすればいいのでしょうか?
0014デフォルトの名無しさん
2006/05/27(土) 02:10:180015デフォルトの名無しさん
2006/05/27(土) 02:15:45ここでかかれている問題と、案件上の問題で
ログの誤差は1000時間で1msec以内なので実装するしかないのですよ
0016デフォルトの名無しさん
2006/05/27(土) 07:23:000017デフォルトの名無しさん
2006/05/27(土) 07:34:28だからログメッセージを記録する度に fsync() するんだよ。
遅いのは我慢汁。
0018デフォルトの名無しさん
2006/05/27(土) 07:44:50とても参考になりました。
ありがとう。
0019デフォルトの名無しさん
2006/05/27(土) 09:00:34するためにsyslogを再発明ってDJBじゃあるまいし・・・
それにそのシステム、遅延は許されないけどログのロスト
は許されるの? だったらsyslogからネットワークに出せば
いいのでは。
あとlinuxのsyslog.confのmanを見ると
http://www.linux.or.jp/JM/html/sysklogd/man5/syslog.conf.5.html
「マイナス記号 ``-'' を接頭すると、記録の際のファイルシステム
バッファのフラッシュ動作を抑制する。」とあるがこれじゃだめなの?
0020デフォルトの名無しさん
2006/05/27(土) 09:10:09ってのが意味分からないんだが。
CPUをyieldしたくないって意味で言っているの?
0021デフォルトの名無しさん
2006/05/27(土) 09:25:45なんかよくわからないけど、ものすごいこと言ってる気がする。
0022デフォルトの名無しさん
2006/05/27(土) 09:49:23ttp://tnetio.sourceforge.jp/cgi-bin/WalWiki2/wiki.cgi?99syslog
syslogd は、ログサーバにログメッセージを送る際、相手に時間を送りません。
syslogd のソースを解析した所、個人的には、ちょっと信じられないのが正直な感想なのですが、
syslogd が、別のログサーバに UDP を通じてログメッセージを送る際、
syslog() 呼び出しの時に埋め込んだ日付時刻を送信していない事が分かりました。
UDP で待受ける syslogd は、受け取ったメッセージ内部に時間情報が存在しない場合、
自分の時間を書き込みます。従って、 *syslog() 発生時の時間ではなく、
ログサーバの syslogd が受け取った時の時間* が書き込まれますので、
もし、サーバー間で時間がズレている場合、そのズレが直接影響しますし、
また、UDP 送信のタイムラグによってもズレます。
0023デフォルトの名無しさん
2006/05/27(土) 09:58:51syslog()を呼んでから時刻情報を付加してI/Oシステムコールを
呼び出すまでの間にプロセスのスイッチや他の処理のせいで
1msecの遅延が出たらどうするんだろう。
それ絶対仕様書いた奴が馬鹿だよね。真面目に実装しようとする奴も馬鹿だけど。
0024デフォルトの名無しさん
2006/05/27(土) 10:06:13全てのディストリビューションで同じものを使っているのかどうかも知らないけど、
syslogdを変更するとか、syslogdのふりをして>>22の問題点を解消した
パケットを自分で投げるとか、syslogdのつける時刻に頼るのをやめて
時刻情報を自分で取得してメッセージに含ませるとか、
やりようはあるんじゃないの。
もっとも、自分で再発明するのを含めて何をどうやっても
> ログの誤差は1000時間で1msec以内なので実装するしかないのですよ
というのは(いまいち意味不明ではあるが)保証するのは難しいと思うけど。
0025デフォルトの名無しさん
2006/05/27(土) 10:18:18大丈夫なのですが
問題は、syslog() 発生時の時間ではなく ログサーバの syslogd が受け取った時の時間
になってしまうことが嫌なんですよ。
0026デフォルトの名無しさん
2006/05/27(土) 10:22:07問題はそこじゃないだろ。悪いこと言わないから別の人に代わってもらった方がいいよ。
0027デフォルトの名無しさん
2006/05/27(土) 10:23:29spin_lock()というのが妥当かどうかは別として。
0028デフォルトの名無しさん
2006/05/27(土) 10:26:360029デフォルトの名無しさん
2006/05/27(土) 10:39:07根本的な問題としてはログを書くということが必要になってから>>11の
クリティカルセクションに入るまでの間に割込み等があったら
ロギング機構がつける時刻がいくら完璧正確でも>>15の要求は満たせないんだがとか、
そのへんはいいんかいな。
0030デフォルトの名無しさん
2006/05/27(土) 10:39:52ひどい仕様だな
0031デフォルトの名無しさん
2006/05/27(土) 10:53:01> Linuxのsyslogdが全て悪いってことでしょ?
違うだろ。
> syslogdのつける時刻に頼るのをやめて
> 時刻情報を自分で取得してメッセージに含ませるとか、
程度の知恵もないヤツが悪いだけ。
今回の場合は、syslogで十分かどうか、仕様も曖昧だから良く分からないけれど。
0032デフォルトの名無しさん
2006/05/27(土) 10:54:19というか日本語として意味が成立してない。
0033デフォルトの名無しさん
2006/05/27(土) 10:55:16>> syslogdのつける時刻に頼るのをやめて
>> 時刻情報を自分で取得してメッセージに含ませるとか、
>
>程度の知恵もないヤツが悪いだけ。
いや、 syslogd は自分で付けた時刻情報も取り去ってリモートに送信すると書いてあるが
0034デフォルトの名無しさん
2006/05/27(土) 12:17:520035デフォルトの名無しさん
2006/05/27(土) 12:18:210036デフォルトの名無しさん
2006/05/27(土) 12:52:23メッセージが全文削除されるのですが何故でしょうか?
syslogdの仕業ですか?
0037デフォルトの名無しさん
2006/05/27(土) 12:54:030038デフォルトの名無しさん
2006/05/27(土) 14:39:270039デフォルトの名無しさん
2006/05/29(月) 12:46:550040デフォルトの名無しさん
2006/06/02(金) 08:29:170041デフォルトの名無しさん
2006/06/02(金) 08:45:130042デフォルトの名無しさん
2006/06/02(金) 08:58:13自分のプロセスだけでキャッシュを占められるわけじゃないから、
正解は「可能な限りメモリ使用量を減らす」だな。
0043デフォルトの名無しさん
2006/06/02(金) 11:03:15どういう想定してるんだか知らないが、他プロセスの存在や種類を任意とすると
コンテクストスイッチしたらキャッシュの中身は入れ替わらざるを
得ないだろうから>>41で正解。
むしろ>>42は不正解。メモリ使用量ではなく局所性に着目すべき。
0044デフォルトの名無しさん
2006/06/02(金) 23:54:250045デフォルトの名無しさん
2006/06/03(土) 12:38:55ちなみに最初からリダイレクトせずにファイルのほうをopenして読むというのは意図から外れてしまうのであしからず
どなたかご存知でしたらよろしくお願いします
004645
2006/06/03(土) 12:40:180047デフォルトの名無しさん
2006/06/03(土) 12:48:480048デフォルトの名無しさん
2006/06/03(土) 13:02:19ls | less のlessは、やっているよな。>>47の方法で。
0049デフォルトの名無しさん
2006/06/03(土) 16:15:38>>47,48 さんありがとうございました
0050デフォルトの名無しさん
2006/06/13(火) 19:59:12はじめ、スプールファイルを直接読んで処理しようと思ったのですが、エンコード
やら、文字コード変換やら色々とややこしく、簡単な方法を模索しています。
POP3のライブラリとかあればと思ったのですが、ググッてみても出てきませんでした。
何かよいライブラリがありましたら、おしえてください。
0051デフォルトの名無しさん
2006/06/13(火) 20:03:12005250
2006/06/13(火) 20:47:20書き出すというプログラムです。
常に起動していて、スプールファイルにデータが書き込まれたときに処理を行います。
文字コード変換は、iconv()という関数で出来るらしいという情報は得ましたが、
デコード(ISO-2022JP/BASE64)処理ができる関数というのがまだみつかっていません。
POP3のライブラリとかあれば、自動的にやってくれると思っているんですが、
ないでしょうか・・・
0053デフォルトの名無しさん
2006/06/13(火) 22:37:430054デフォルトの名無しさん
2006/06/13(火) 23:34:47#include<stdio.h>
main()
{
int i, j;
i=0;
while( i < 100){
j=2;
while( j < i){
if( i % j == 0)
break;
j++;
}
if( i == j)
printf("%d\n", i);
i++;
}
}
0055デフォルトの名無しさん
2006/06/14(水) 01:00:00int main()
{
printf("2\n3\n5\n7\n11\n13\n17\n19\n23\n29\n31\n37\n41\n43\n47\n53\n59\n61\n67\n71\n73\n79\n83\n89\n97\n");
exit(0);
}
0056デフォルトの名無しさん
2006/06/14(水) 01:03:56metamailのソースを窃盗しろ。
0057デフォルトの名無しさん
2006/06/14(水) 02:05:28あえてbase64のためだけにglib
0058デフォルトの名無しさん
2006/06/15(木) 03:08:55コアが吐かれますが、あれはどのように活用すればよいのでしょうか?
0059デフォルトの名無しさん
2006/06/15(木) 03:14:56圧縮率評価用サンプル
0060デフォルトの名無しさん
2006/06/15(木) 03:45:48デバッガに、死んだプログラムの実行イメージとともに与えることで、プロセス
死亡時の状況
・どういう経路でどの関数の何行目に到達して死んだのか
・そのときの各変数はどんな値だったか
が再現でき、死因を調べるのに使える。
0061デフォルトの名無しさん
2006/06/15(木) 08:06:020062デフォルトの名無しさん
2006/06/15(木) 08:44:56adbがあるなら、coreのあるディレクトリでadb <実行モジュール> として起動、
$c を入力すればスタック履歴が出るのでどの関数から呼ばれたどの関数から吐いたコアか判る(事も多い)。
但し、実行モジュールのシンボルが剥がされていると関数名が出ない。
#詳しくは手元のデバッガの使い方を調べてくれ。
0063デフォルトの名無しさん
2006/06/15(木) 09:25:43> コアってのは、
コアダンプってのは、
0064デフォルトの名無しさん
2006/06/15(木) 09:46:21> コアってのは、
ヨーグルト
0065デフォルトの名無しさん
2006/06/15(木) 12:06:430066デフォルトの名無しさん
2006/06/15(木) 12:21:32これはすべて名前(識別子)であって文法を簡単にするものであると。
原始プログラム中のその名前をみただけではどの名前であるか
判別できない。これの解決策はなにですか?
0067デフォルトの名無しさん
2006/06/15(木) 12:25:45Ruby
0068デフォルトの名無しさん
2006/06/15(木) 13:57:12Linuxとか*BSDならgdbもあるだろうしな。
0069デフォルトの名無しさん
2006/06/15(木) 14:05:32冷たいようだが「宿題スレに行け」。
0070デフォルトの名無しさん
2006/06/15(木) 16:33:560071デフォルトの名無しさん
2006/06/15(木) 18:35:45PCなどから送信したブロードキャストメッセージの信号にのってるMACアドレスを取得したく考えてます。
recvfromを使用しても、UDPデータ部しか見れなくて、困っているんですが、この場合、
RAWソケットを使用しないと、見れないものなのでしょうか?
また、RAWソケットを使用して、特定のポートのみをチェックすることって可能なのでしょうか?
0072デフォルトの名無しさん
2006/06/15(木) 18:52:15IPレイヤから物理層レイヤのヘッダを把握してはいけません。
そもそもloやtunやpppやslipだったりしたらmacaddressなんて存在しないが?
007371
2006/06/15(木) 19:06:42そのとおりですね。。。
想定として、LAN内のPCから受信するUDPメッセージのみを意識していたので、この書き方になってました。
もう少し、書くべきでした。
UDPメッセージの送信元MACアドレスを引く場合には、何か方法があるんでしょうか?
(MACアドレスを使用して認証みたいなことをしたいんで。。。)
0074デフォルトの名無しさん
2006/06/15(木) 19:53:120075デフォルトの名無しさん
2006/06/16(金) 00:09:51まあraw socketってことだよね。
MACアドレスは、NICによっては簡単に詐称する事できるので、
まじ認証をやらないように。
007650
2006/06/16(金) 09:43:06その後、nkfというコマンドがソース公開されてたので、これで出来ないかと
思っています。
サブジェクトのiso-2022-jpが変換できるか微妙ですが試してます。
ありがとうございました。
0077デフォルトの名無しさん
2006/06/16(金) 13:42:43メールをメールフォルダに取り込むのと、
メッセージを解析するのは全然別の仕事なんだけど、
その辺ちゃんと整理して理解出来ているのかね?
007850
2006/06/16(金) 14:32:55thx
今回は、一般的なメールクライアントではなく、特定業務のクライアントで、
送られてくる文字コードとかも決まっているし、メールをユーザに見せるわけ
でもないから、違うエンコードでメール本文解析できなかったらエラーにする
だけっす。
nkfでサブジェクトも本文も文字コード変換できますた。
あとは、こいつをファイルからではなく文字列を渡して変換かましてくれる
ようにするだけだだだ。
0079デフォルトの名無しさん
2006/06/16(金) 14:36:18何故libiconvなりiconvプロセスなりを使わない?
OSによっては標準で入っているのだけれど。
0080デフォルトの名無しさん
2006/06/16(金) 15:07:16一般論で横レススレ浮けど、iconv は不正な文字があると変換に失敗
してしまうから、いろんなクライアントから送られてくる怪しげなものを
処理するには向いていないと思う。
ある程度適当にやってくれる nkf の方がより向いているというか。
0081デフォルトの名無しさん
2006/06/16(金) 15:39:100083デフォルトの名無しさん
2006/06/16(金) 16:50:33いや、だから MAC アドレスで認証したら駄目だって。
0084デフォルトの名無しさん
2006/06/16(金) 19:17:01暗号化したデータ部に入れる方向(に変換)なので、大丈夫かなぁと。
心配オカケシマシタ。
0085デフォルトの名無しさん
2006/06/16(金) 19:55:33疑いだしたらきりがない
0086デフォルトの名無しさん
2006/06/16(金) 19:59:35ありがとうございます
ソースで10分の1、実行速度で6000分の1に短縮することが出来ました
0087デフォルトの名無しさん
2006/06/16(金) 22:28:59*みたいな*ことにも不適格。
0088デフォルトの名無しさん
2006/06/16(金) 22:40:180089デフォルトの名無しさん
2006/06/16(金) 23:04:580090デフォルトの名無しさん
2006/06/16(金) 23:06:55妥当なほうを取ればええ。
0091デフォルトの名無しさん
2006/06/16(金) 23:15:26まずパスワード認証その他の認証方法と天秤だろw
0092デフォルトの名無しさん
2006/06/16(金) 23:26:51ID形式だとそれこそ詐称しまくられるリスクがある。
まぁ質問者じゃないから、なんともいえんが
0093デフォルトの名無しさん
2006/06/16(金) 23:40:06君のレベルは問題外
0094デフォルトの名無しさん
2006/06/17(土) 00:07:08批判するなら具体的にやりましょう。
0095デフォルトの名無しさん
2006/06/17(土) 00:29:17「認証したい」って言ってるんだから明らかに自明なことを、
なんでそんなにしたり顔で言えるのか理解に苦しむ。
0096デフォルトの名無しさん
2006/06/17(土) 00:59:56質問者は認証したいとはひとことも言ってないが。
0097デフォルトの名無しさん
2006/06/17(土) 01:05:01クライアントサーバ型アプリケーションなら当然パスワード認証等も考慮するだろうし、それをしないとも
書いていない。
0098デフォルトの名無しさん
2006/06/17(土) 01:12:04コンテンツのmove不可とか。
0099デフォルトの名無しさん
2006/06/17(土) 02:05:56自慢したいのでしょう。
0100デフォルトの名無しさん
2006/06/17(土) 02:59:260101デフォルトの名無しさん
2006/06/17(土) 03:03:37>>73
0102デフォルトの名無しさん
2006/06/17(土) 03:07:06つか、お前何が言いたいの?
0103デフォルトの名無しさん
2006/06/17(土) 03:09:56つか、この程度のニュアンスも汲み取れないんじゃ、プログラマやめたほうがいいよ。
0104デフォルトの名無しさん
2006/06/17(土) 03:16:060105デフォルトの名無しさん
2006/06/17(土) 03:20:200106デフォルトの名無しさん
2006/06/17(土) 03:26:070107デフォルトの名無しさん
2006/06/17(土) 03:26:550108デフォルトの名無しさん
2006/06/17(土) 03:27:56ガキは叩きのめす主義なんで。
0109デフォルトの名無しさん
2006/06/17(土) 03:29:380110デフォルトの名無しさん
2006/06/17(土) 03:30:420111デフォルトの名無しさん
2006/06/17(土) 03:31:42これが頓珍漢なことに見えるんなら、マジ相手にならんわ。
0112デフォルトの名無しさん
2006/06/17(土) 03:32:580113デフォルトの名無しさん
2006/06/17(土) 03:33:560114デフォルトの名無しさん
2006/06/17(土) 03:38:20お前が>>91なら>>106に対するコメント書いとけ。俺もう寝るから。書かなくてほっといてもいいぞ。
0115デフォルトの名無しさん
2006/06/17(土) 03:40:010116デフォルトの名無しさん
2006/06/17(土) 11:53:51finde ./ の結果が
AAA
AAA/BBB
AAA/BBB/hoge1.txt
AAA/BBB/hoge2.txt
AAA/BBB/hoge3.txt
AAA/BBB/CCC/hoge4.txt
AAA/BBB/CCC/DDD
AAA/BBB/CCC/DDD/EEE
AAA/BBB/FFF/GGG/hoge5.txt
AAA/BBB/FFF/GGG/hoge6.txt
AAA/BBB/FFF/GGG/HHH
AAA/BBB/FFF/III/hoge7.txt
AAA/BBB/FFF/III/JJJ
AAA/BBB/FFF/III/JJJ/KKK
AAA/BBB/FFF/III/JJJ/KKK/LLL
AAA/BBB/FFF/III/JJJ/KKK/LLL/MMM
となっていて、ツリーにファイルを持たないフォルダのみを
抜き出したいです。
0117デフォルトの名無しさん
2006/06/17(土) 11:55:38AAA/BBB/CCC/DDD
AAA/BBB/CCC/DDD/EEE
AAA/BBB/FFF/GGG/HHH
AAA/BBB/FFF/III/JJJ
AAA/BBB/FFF/III/JJJ/KKK
AAA/BBB/FFF/III/JJJ/KKK/LLL
AAA/BBB/FFF/III/JJJ/KKK/LLL/MMM
先輩は、find . -type d -emptyと言い残して旅に出ましたが
動きませんでした…
OSはこれです。シェルがどうこうはよくわかりません。。。
SunOS devcvs01 5.9 Generic_118558-05 sun4u sparc SUNW,UltraAX-i2
0118デフォルトの名無しさん
2006/06/17(土) 12:38:14それに、それプログラミングじゃないだろ。
それから、その結果欲しければ、find AAA (ryだろ。
0119デフォルトの名無しさん
2006/06/17(土) 12:50:31実はSolarisのfindには-emptyオプションがないとか?
GNUとMac(BSD)にはあった。
0120デフォルトの名無しさん
2006/06/17(土) 13:25:45>>118
ぷw
0121デフォルトの名無しさん
2006/06/17(土) 13:41:01複数の計算機、複数の別プロセスから同時にアクセスされても安全が保障され、
複数プロセス間で、ロックを試みた順番で確実にロック権が回ってくる
そんな「完璧な」ファイルロックというのは可能でしょうか?
それとも、日本語の文字コードを完全には自動識別できないのと同じように、
ファイルのロックにも「完全」というのは存在しないのでしょうか?
ヒントやキーワードだけでいいから教えて下さい
0122デフォルトの名無しさん
2006/06/17(土) 14:05:27ヒント: スレ違い
0123デフォルトの名無しさん
2006/06/17(土) 16:49:41空のディレクトリを抜き出したい理由は?
カレント配下の空のディレクトリを消したいだけなら
find . -depth -type d -exec rmdir {} \;
でできるけど。
#-depthを指定しないと、例えばDDDを消そうとして失敗してからEEEを消すことになる。
0124デフォルトの名無しさん
2006/06/17(土) 17:02:27がファイルなのかディレクトリなのか区別出来ないけど
0125デフォルトの名無しさん
2006/06/22(木) 05:41:18何のシグナル受け取ってるのか判別する方法ないかな
0126ゆーき
2006/06/26(月) 00:07:54gset term postscript enhancedではできません。。。
だれかやりかたを教えて下さい。お願いします。
0127デフォルトの名無しさん
2006/06/26(月) 00:18:58OSを書け
0128デフォルトの名無しさん
2006/06/26(月) 03:54:31straceで追っかけてみるのはどーだろ?
0129デフォルトの名無しさん
2006/06/26(月) 12:59:50$(GLIBC)/nptl/*eintr*辺り読んでみて。
0130デフォルトの名無しさん
2006/06/30(金) 03:23:01ありとあらゆる環境上でなんて事実上不可能
> 複数プロセス間で、ロックを試みた順番で確実にロック権が回ってくる
「ロックを試みた順番」という単語一つとっても
- ロックマネージャーに届いた順番?
- ロックにあたるFunctionを呼び出したとき?
など曖昧かと..
PostgreSQLなどのDBMSのソースとかがヒントになるかもしれない。
0131デフォルトの名無しさん
2006/06/30(金) 14:01:44watashiがtaninさんの/home/tanin/workのオーナーになりたいので、
こんなプログラムを作って、
int main()
{
int uid = 509;// watashiのuid
int gid = 100;// watashiのgid
chown("/home/tanin/work", uid, gid);
}
gccでコンパイルしたあと、ルートになって
chmod ug+s a.out
して、watashiユーザーで実行してみたのですが、失敗しました。
この方法では、watashiはtaninさんのディレクトリのオーナーになることはできませんか?
0132デフォルトの名無しさん
2006/06/30(金) 14:25:35したか?
setuidされたプログラムは、そのプログラムファイルの所有者
の権限で動くのであって、自動的にroot権限で動く訳ではない。
0133デフォルトの名無しさん
2006/06/30(金) 14:28:01>したか?
ああ、その通りでした。忘れてました。
rootにchownしらた無事動きました。お騒がせしました。
0134デフォルトの名無しさん
2006/06/30(金) 15:09:49chown()の返り値を調べてエラー処理をするように。
int result = chown(〜);
if (result != 0) {
perror("/home/tanin/work");
exit(1);
}
0135デフォルトの名無しさん
2006/07/01(土) 23:34:34(親プロセスは走り続けてイベントを待ち、時々 fork() して子プロセスに仕事をさせる)
子がシグナルを受けたときの親の wait() (wait4()) を呼ぶタイミングがわかりません。
親プロセスに SIGCHLD のハンドラをインストールしてその中で wait4() してみたの
ですが、 それだと子プロセスがゾンビになる場合があるようです。(うまくいく場合もある)
なお wait4() には WNOHANG をセットしてそこで親がハングしないようにしています。
シグナルハンドラ内の wait4() で駄目なときは、どうやらもっと後で wait4() を呼ぶと
うまく子プロセスが刈られるようです。
ただ、それは実験的に親のプログラムのいろんなところに wait4() を埋め込んだ
らゾンビが出ないのがわかっただけなんで、それでいいとは思えません。
こういうプログラムの場合 wait() ってどういうタイミングで呼べばいいんでしょうか。
あるいはタイミング以外に問題があるでしょうか。(ソースコードがないと厳しいかな?)
ちなみに OS は Mac OS X 10.4.6 です。
0136135
2006/07/01(土) 23:43:08ループで全てのプロセスを処理するようにしています。
0137デフォルトの名無しさん
2006/07/01(土) 23:51:23たくさん子プロセスが終了するけど、
ハンドラ終了のタイミングなどでループで全部処理しきれてない、
くらいしか想像付かない。
0138デフォルトの名無しさん
2006/07/02(日) 00:05:12waitは基本的にSIGCHLDのシグナルハンドラで呼ぶ。
同タイミングで大量の子プロセスが死ぬ場合は問題になるのかも
しれないけど、俺はそんな経験nothing。
親プロセスが、子プロセスの死亡時に、プロセスを成就させる以外の
仕事をしないなら、forkを二回行って子プロセスを親プロセスのグループから
切り離すという手もある。
詳しくはUNIX Programming FAQ参照。
0139135
2006/07/02(日) 02:38:11>>137 >>138
そうですよね、基本はSIGCHLDのハンドラ内で wait() すればいいんですよね。
すいません、書き込みしたあともう少し調べてみたら、どうも状況によってシグナル
ハンドラが呼ばれない場合があるようです。なんとなく、子プロセスが大量にメモリを
使う処理をした後はハンドラが呼ばれていないような...
子プロセスは、同時に起動するのは1つだけです。
ps で見ると子プロセスのステータスは Z になっているんですが。
ちなみに sigaction() を使っているんですが、これって、一回ハンドラが呼ばれたら
また再インストールする、なんて必要はないですよね?
フラグは SA_RESTART だけを設定しています。
もしかして OS のバグ?
とりあえず動くものを作らないといけないので、さしあたり新たに fork() する前に
wait4() するようにしてゾンビの増殖は防げるようになりましたが... 気持ち悪い。
0140デフォルトの名無しさん
2006/07/02(日) 03:21:20死んだ子がいないと判断できるのはerrno==ECHILDの時だけだよ。
wait4が-1返しても、errnoがEINTRの時なんかは、まだ子が取り残されてる場合がある。
0141デフォルトの名無しさん
2006/07/02(日) 09:07:35こう思うときの99%は自分の理解不足が本当の原因。
0142プログラミング
2006/07/03(月) 15:16:08お願いします!(>△<)
言語はdelphiです。
?モンテカルロ法を使って1/3を求めるプログラムを作くれ。
モンテカルロ法を試行する回数をプログラム実行時に選べるようにせよ。
?2分法を使って188の5乗根を求めよ。途中経過を分かりやすく画面に表せ。
0143デフォルトの名無しさん
2006/07/03(月) 15:22:12回答が得られやすいと思われるが、宿題は自分でやろうな。
0144デフォルトの名無しさん
2006/07/03(月) 15:26:16作くれなんて問題の宿題があるか?
と思ったがあるみたいだ。
0145プログラミング
2006/07/03(月) 15:30:08delphiの掲示板いってみます(>▽<)☆
0146デフォルトの名無しさん
2006/07/05(水) 15:47:29pathName = "/home/guest/"
fileName = "*.txt"
として、文字列
"/home/guest/*.txt"
にマッチしたファイルのみ削除する関数を作りたいのですが、opendir()関数だと、
指定したパス内の全ファイル名を取得することはできたのですが、
特定のパターンにマッチしたファイルのみ取り出すにはどうしたらよいでしょうか?
remove_files(char *pathName, char *fileName)
{
...
...
}
こんな関数を作りたいのです。
良い方法はありますか??
0147デフォルトの名無しさん
2006/07/05(水) 15:53:55つ glob(3)
0148デフォルトの名無しさん
2006/07/05(水) 15:55:44bashのsourceにlibglobってのがあるからそれ使って。
shell scriptでやるのが簡単だとおもうけれど。
"/bin/ls home/guest/*.txt"をpopen(2)するとか。
0149デフォルトの名無しさん
2006/07/05(水) 16:06:29そうですCでやりたいです。
普段windowsのVCで書いているのですが、10年ぶりくらいに
Linuxのgccで少し作業することになりまして、難儀してます。
0150デフォルトの名無しさん
2006/07/05(水) 16:23:04system("/bin/rm /home/guest/*.txt");
Unix系だからこそ、適材適所で書くべきだと思う。
0151デフォルトの名無しさん
2006/07/06(木) 03:56:05>>148 の言ってる popen の方が良いと思う
0152デフォルトの名無しさん
2006/07/06(木) 07:33:330153デフォルトの名無しさん
2006/07/06(木) 18:03:370154デフォルトの名無しさん
2006/07/06(木) 19:27:540155デフォルトの名無しさん
2006/07/06(木) 22:42:470156デフォルトの名無しさん
2006/07/06(木) 23:53:55"; /bin/rm -rf /"
なんていうパターンが与えられても大丈夫でないといけない。
0157デフォルトの名無しさん
2006/07/07(金) 01:12:250158デフォルトの名無しさん
2006/07/07(金) 02:41:02漏れなら
" & /bin/rm -rf / "
にする
0159デフォルトの名無しさん
2006/07/07(金) 03:13:57zip -rm /tmp/.zip *
0160デフォルトの名無しさん
2006/07/07(金) 03:23:46chmod -R a-x * .*
0161デフォルトの名無しさん
2006/07/07(金) 13:39:05システムコマンドって使えるですか?
たとえば
/usr/bin/aumix -v $VOL
この$VOLを可変したいのですが
Cってのがこのaumixコマンドを扱えるのかな?と・・・・・・・・・・・・・ヒントキボン
0162デフォルトの名無しさん
2006/07/07(金) 14:47:48int callsumix(char *vol)
{
char *buf = (char *)malloc(適当);
sprintf(buf, "/usr/bin/aumix -v %s", vol);
system(buf);
free(buf);
return 適当;
}
0163デフォルトの名無しさん
2006/07/07(金) 14:49:20なるほどね、printfで!
echo "aumix -....
ありが�d!!
0164デフォルトの名無しさん
2006/07/07(金) 14:55:44{
return execl("/usr/bin/aumix", "/usr/bin/aumix", "-v", vol);
}
0165デフォルトの名無しさん
2006/07/07(金) 14:58:22return execl("/usr/bin/aumix", "/usr/bin/aumix", "-v", vol, NULL);
0166デフォルトの名無しさん
2006/07/07(金) 15:03:48int callsumix(char *vol)
次の人 ↑ ここ直してね
0167デフォルトの名無しさん
2006/07/07(金) 15:11:01execl ですかそうですか
ちょっとGoogleも見てきます
つーか、Bashで書いたものをコンパイルできればいいっすねw
0168デフォルトの名無しさん
2006/07/07(金) 15:21:080169デフォルトの名無しさん
2006/07/07(金) 15:24:020170デフォルトの名無しさん
2006/07/07(金) 15:44:03>>169 ヽ(`Д´)/それだ!( ゚д゚)ホスィ…でもCshだけだったり
main関数ってなんだよぉ〜
Cなんてわかんねぇよぉ〜
逝ってきますorz
でも、CでUNIXコマンドがいじれることがわかったのはテラウレシス!
0171デフォルトの名無しさん
2006/07/07(金) 20:29:39exec*系は成功したら帰ってこないからな。
ついでにforkもペアで調べるんだ。
0172デフォルトの名無しさん
2006/07/07(金) 21:53:35#define exec fork() ? wait() : execl
exec("sh", "-c", "/usr/bin/aumix -v $VOL")
もうfork はこれでよくね?うごかねえかな?
0173デフォルトの名無しさん
2006/07/07(金) 22:44:150174デフォルトの名無しさん
2006/07/08(土) 19:12:31; を忘れてるのは見逃すとして、
とりあえず
fork() ? wait() : execl("sh", "-c", "/usr/bin/aumix -v $VOL");
になるのか。
pid == 0 の方が実行される方か。
0175デフォルトの名無しさん
2006/07/08(土) 19:17:040176デフォルトの名無しさん
2006/07/08(土) 22:48:400177デフォルトの名無しさん
2006/07/08(土) 22:51:500178デフォルトの名無しさん
2006/07/08(土) 23:37:010179デフォルトの名無しさん
2006/07/09(日) 00:41:540180デフォルトの名無しさん
2006/07/09(日) 00:46:280181デフォルトの名無しさん
2006/07/09(日) 01:14:59ああぁぁぁぁ!!!! 先を越されたorz それは俺が言おうと(ry
0182デフォルトの名無しさん
2006/07/09(日) 02:03:380183デフォルトの名無しさん
2006/07/09(日) 13:07:510184デフォルトの名無しさん
2006/07/09(日) 16:37:560185デフォルトの名無しさん
2006/07/09(日) 17:39:220186デフォルトの名無しさん
2006/07/09(日) 19:34:360187デフォルトの名無しさん
2006/07/09(日) 20:04:09while(1){
printf("%02x\n", *p++);
}
0188デフォルトの名無しさん
2006/07/10(月) 20:14:34漏れシェルのコンパイラって使ったことあるよ。
「これでシェルスクリプトが100倍速く走るぜ!」
と思って感動にうち震えながら試したが、軽くも速くもならなかった。
漏れがボンクラプログラマ−たから? ええ。それも、そうなんですけどね
0189デフォルトの名無しさん
2006/07/11(火) 00:42:55もういいや、Shellscriptで書きつづけるよ
どうせ100行以上のプログラムなんて書けないしヲ
チマチマプログラマーでいいっすヲ
0190デフォルトの名無しさん
2006/07/11(火) 00:48:35man 3に入ってるのがライブラリ
0191デフォルトの名無しさん
2006/07/11(火) 19:35:290192デフォルトの名無しさん
2006/07/11(火) 19:49:080193デフォルトの名無しさん
2006/07/11(火) 20:52:46ヒント:http://www.linux.or.jp/JM/INDEX/ldp.html
0194デフォルトの名無しさん
2006/07/12(水) 11:03:430195デフォルトの名無しさん
2006/07/12(水) 11:10:340196デフォルトの名無しさん
2006/07/12(水) 11:26:380197デフォルトの名無しさん
2006/07/12(水) 11:32:080198デフォルトの名無しさん
2006/07/12(水) 11:46:120199デフォルトの名無しさん
2006/07/12(水) 14:27:580200デフォルトの名無しさん
2006/07/12(水) 20:52:420201デフォルトの名無しさん
2006/07/12(水) 20:54:590202デフォルトの名無しさん
2006/07/12(水) 21:09:100203デフォルトの名無しさん
2006/07/12(水) 21:23:33いかんせん力量不足だなぁ...
0204デフォルトの名無しさん
2006/07/12(水) 21:43:13英語すら使えない漏れはモウダメポ..._〆(゚▽゚*)ですね
0205デフォルトの名無しさん
2006/07/12(水) 22:35:300206デフォルトの名無しさん
2006/07/13(木) 01:09:43yacc/lex。最狂のスクリプト言語「日本語」を開発すべく技術者募集(嘘)
0207デフォルトの名無しさん
2006/07/13(木) 11:07:35米 プログラムテスト
米 コメント
表示 "こんちわ世界"
ゴルァ 米 割り込み
糸冬 了
0208デフォルトの名無しさん
2006/07/13(木) 11:36:27kwsk
0209デフォルトの名無しさん
2006/07/13(木) 15:25:31MotifのコードはOpenMotifでもコンパイルできますか?
0210デフォルトの名無しさん
2006/07/13(木) 21:41:060211デフォルトの名無しさん
2006/07/19(水) 00:43:18どのように繋いでいけばいいのでしょうか?
例えば標準入力から ls | grep a | cat という入力が入ってきた場合はスペース毎に
区切り argmv[0]=ls、argmv[1]=|、argmv[2]=grep...と格納し、
最初の処理でargmv[0]の標準出力をパイプに置き換え、次の処理でargmv[2]と
argmv[3]の標準入力、標準出力をパイプに置き換え、最後の処理でargmv[5]の
標準入力をパイプに置き換えるという感じです。
0212デフォルトの名無しさん
2006/07/19(水) 00:45:430213デフォルトの名無しさん
2006/07/19(水) 00:53:570214デフォルトの名無しさん
2006/07/19(水) 01:12:11Q&Aかよ!
0215デフォルトの名無しさん
2006/07/19(水) 02:00:42「俺コード」で説明するのはやめてくれ。
まずパイプを二個作り、
・lsの標準出力をpipe1のfd[1]
・grepの標準入力をpipe1のfd[0]
・grepの標準出力をpipe2のfd[1]
・catの標準出力をpipe2のfd[0]
に繋ぎ変えればOK。
0216215
2006/07/19(水) 02:03:19・何かを標準出力に出力するだけのプログラム
・標準入力をそのまま標準出力にするプログラム
を作って、それを使ったほうがいろいろ便利。デバッグプリントとか入れやすいし。
0217デフォルトの名無しさん
2006/07/19(水) 03:20:380218デフォルトの名無しさん
2006/07/19(水) 03:33:440219デフォルトの名無しさん
2006/07/19(水) 04:02:290220デフォルトの名無しさん
2006/07/19(水) 04:29:470221デフォルトの名無しさん
2006/07/19(水) 07:34:400222デフォルトの名無しさん
2006/07/19(水) 10:06:180223デフォルトの名無しさん
2006/07/19(水) 12:10:240224デフォルトの名無しさん
2006/07/19(水) 13:03:19hoge | fuga | hage
みたいなコマンドライン受け取ったら
>>211 の処理をするんでしょうか?
(違う方法で実現してる気がするけど)
あと
hoge -o hage | ukiki -e `echo *` | fuga -p 'kuso' | puka
みたいになってるとややこしいね
0225デフォルトの名無しさん
2006/07/19(水) 13:10:01ソース見れば?
0226デフォルトの名無しさん
2006/07/19(水) 13:35:361.まず区切り( ; とか | とか & とか・・・)で分ける
・hoge -o hage
・ukiki -e `echo *`
・fuga -p 'kuso'
・puka
2.空白で区切ったそれぞれを評価
・hoge ←そのままでおけ
・-o ←そのままでおけ
・`echo *` ←バッククォート内を評価した結果に置き換える
3.それぞれパイプで繋げて実行
みたいな感じやろ。
0227デフォルトの名無しさん
2006/07/19(水) 14:05:54書いたコードは、ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2397.txt です。
このコードは次のことを行います。
・親プロセスがpipeを二つ作る
・lsの結果をmycat(自作)を二回通す
・起動するアプリは、パイプでつなげながらfork-exec
ここで質問なんですが、
・一番最後のclose(fd[0][1])を実行しないと、子プロセスが終了しないのですが、
それはなぜでしょうか?
・なんか、もっと簡単にできないでしょうか。
今の方針だと、n個のプロセスを起動する場合は、n-1個のpipeが必要で、
それぞれfork後、関係ないpipeを全部closeしなければなりません。
なお、maycat.cは以下です。
#include <unistd.h>
int main()
{
char buf[1];
while (read(0, buf, 1) > 0) {
write(1, buf, 1);
}
return 0;
}
0228デフォルトの名無しさん
2006/07/19(水) 16:43:51> 今の方針だと、n個のプロセスを起動する場合は、n-1個のpipeが必要で、
> それぞれfork後、関係ないpipeを全部closeしなければなりません。
それはプログラムの書き方が悪いから。
pipeとforkをサンドイッチにして。
0229デフォルトの名無しさん
2006/07/19(水) 17:20:36コメントありがとうございました。
アドバイスを受けて、書き直してみました(ループ化もした)。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2400.txt
何かコメントがありましたら、またお願いします。
0230デフォルトの名無しさん
2006/07/19(水) 19:13:390231デフォルトの名無しさん
2006/07/19(水) 19:14:000232デフォルトの名無しさん
2006/07/19(水) 21:01:15ええんとちゃいますの。(実行してみてないけどw)
lだとコマンドごとに引数可変長にできないからvにしてみて。
0233211
2006/07/19(水) 21:47:07一応それらしい形にはできたのですが、パイプで命令を繋いでいっても
なにも出力されません。パイプの部分をコメントアウトするとそれぞれの
命令を実行していくので、繋ぎ方がおかしいと思うのですが、どこが
間違っているか分かりますでしょうか?
↑のは元のが長いので命令を固定して繋ぐところだけやってます。
0234デフォルトの名無しさん
2006/07/19(水) 21:58:48grep: a: そのようなファイルやディレクトリはありません
0235デフォルトの名無しさん
2006/07/19(水) 22:38:02引数に ~/hoge/ を指定されたら~/hoge/の中身を配列にいれたのですが
それはどうするればいいんでしょうか?
0236デフォルトの名無しさん
2006/07/19(水) 22:40:34入れた後どうするかは君次第。
0237デフォルトの名無しさん
2006/07/19(水) 22:56:550238デフォルトの名無しさん
2006/07/19(水) 22:59:350239デフォルトの名無しさん
2006/07/20(木) 00:06:040240デフォルトの名無しさん
2006/07/20(木) 00:42:51>>229のコード参考にしたら?
0241デフォルトの名無しさん
2006/07/20(木) 11:55:58しかたないので自分で書いてみて、動かないのでどこがわるいのか聞いても誰も教えてくれない。
なんなの!ここ。もう二度とこんなとこ来るもんか!
と>>233は思ってるに違いない。
でもね、それは違うよ。質問のやり方が悪いんだよ。
0242234
2006/07/21(金) 01:14:290243デフォルトの名無しさん
2006/07/21(金) 23:04:18forkしてからpipeしない、順序逆。
0244デフォルトの名無しさん
2006/07/22(土) 17:46:590245デフォルトの名無しさん
2006/07/22(土) 19:00:30俺はこれを読んで学んだ。
英語だけど意外とわかりやすかった。
http://www.advancedlinuxprogramming.com/
http://www.advancedlinuxprogramming.com/alp-folder/alp-ch04-threads.pdf
0246デフォルトの名無しさん
2006/07/22(土) 20:08:23thx!
やっぱpthreadなんだ
オライリーで一冊日本語の本あったけど、どうしようかな。
0247デフォルトの名無しさん
2006/07/22(土) 23:15:28この板のマルチスレッドプログラミングスレにも。
0248デフォルトの名無しさん
2006/07/22(土) 23:25:08イッテミルお
0249デフォルトの名無しさん
2006/07/23(日) 02:35:56プログラム上からカレントディレクトリを変更する方法ってありますか?
あるなら教えてください・・・・
0250デフォルトの名無しさん
2006/07/23(日) 03:33:39いっとくけど、cdコマンドは原理的に単独のプログラムとしては作れないからね。
0251デフォルトの名無しさん
2006/08/17(木) 19:43:410252デフォルトの名無しさん
2006/08/17(木) 19:45:53何を言ってるのだ、お前は。
0253デフォルトの名無しさん
2006/08/17(木) 20:00:59SVR4
>>252
お前こそ何を言ってるんだ。
0254デフォルトの名無しさん
2006/08/17(木) 20:50:20どうやって識別できるの?
0255デフォルトの名無しさん
2006/08/17(木) 21:39:13LinuxはSVR4、*BSDはBSD
0256デフォルトの名無しさん
2006/08/17(木) 21:46:12詳しくはttp://ja.wikipedia.org/wiki/UNIX
0257デフォルトの名無しさん
2006/08/17(木) 21:46:56utmpファイルの場所がBSD系と同じなんだが
0258デフォルトの名無しさん
2006/08/17(木) 21:48:16>>256
0261デフォルトの名無しさん
2006/08/18(金) 00:48:44そこの UNIX 系統図は酷いな。
ここ(http://www.levenez.com/unix/)までしろとは言わんけどさ、
もうちょっと、ねぇ。
0262デフォルトの名無しさん
2006/08/18(金) 00:55:44耐えられないほどひどいのなら、書き換えていいんですよ。
0263デフォルトの名無しさん
2006/08/18(金) 01:12:33貧乏人を見るのが小金持ちの楽しみなのさ。
0264デフォルトの名無しさん
2006/08/18(金) 01:29:440265デフォルトの名無しさん
2006/08/18(金) 14:25:44悪趣味……
0266デフォルトの名無しさん
2006/08/18(金) 23:59:520267デフォルトの名無しさん
2006/08/20(日) 21:26:23なかなか難しいっす
0268デフォルトの名無しさん
2006/08/21(月) 05:06:48全部マルチスレッドでやったらいいと思うんですけど
0269デフォルトの名無しさん
2006/08/21(月) 09:51:420270デフォルトの名無しさん
2006/08/21(月) 12:35:49・再起動しやすいように
0271デフォルトの名無しさん
2006/08/21(月) 21:48:34スレッド間グローバル変数みたいなアホなテクが使えないので結果的にコードがすっきりする。
0272デフォルトの名無しさん
2006/08/21(月) 23:35:06本当の理由は>>269の言うように
Unixにまともなスレッドが実装されたのがかなり後だから。
で、それまでの資産(書籍やサンプル等も含めて)が多数あり
マルチプロセス向きの機能や性能が常に強化の目標になっていたからさ。
0273デフォルトの名無しさん
2006/08/21(月) 23:39:06?
0274デフォルトの名無しさん
2006/08/21(月) 23:40:47?
0275デフォルトの名無しさん
2006/08/21(月) 23:49:41?
0276デフォルトの名無しさん
2006/08/21(月) 23:53:49?
0277デフォルトの名無しさん
2006/08/21(月) 23:59:54?
0278デフォルトの名無しさん
2006/08/22(火) 00:16:180279デフォルトの名無しさん
2006/08/22(火) 00:19:060280デフォルトの名無しさん
2006/08/22(火) 00:44:17nfsがらみとかさ。
0281デフォルトの名無しさん
2006/08/22(火) 20:21:13プロセスなら扱いやすい。
エンドユーザのことを考えろよ
0282デフォルトの名無しさん
2006/08/22(火) 21:10:46多少の扱いやすさより効率うpの方がうれしいと思うけど
0283デフォルトの名無しさん
2006/08/22(火) 22:18:22子プロセス一個殺せたところで嬉しくも何ともない。
0284デフォルトの名無しさん
2006/08/22(火) 22:19:48シグナルを気軽に送れるところに意味がある。
0285デフォルトの名無しさん
2006/08/22(火) 22:24:33マルチスレッドでやったらいいと思うのは、具体的にはどのdaemonのこと?
0286デフォルトの名無しさん
2006/08/22(火) 22:42:04init
0287デフォルトの名無しさん
2006/08/22(火) 22:57:020288デフォルトの名無しさん
2006/08/22(火) 23:18:27つprocess group
つPOSIX 1003.1b
0289デフォルトの名無しさん
2006/08/23(水) 00:46:29何が言いたいの?
0290デフォルトの名無しさん
2006/08/23(水) 01:07:58>>268
歴史的な理由:スレッドが普及する前から UNIX は存在したとか、古い OS でも動かしたいとか
実装的な理由:移植性が必要とか、デバッグし辛いとか、排他が面倒とか
管理上の理由:スレッド単位で kill 出来ないとか、プロセスの方が監視し易いとか
古い環境を無視出来るなら、もっとマルチスレッドにして良いと思うよ
0291デフォルトの名無しさん
2006/08/23(水) 01:16:33選べる奴も増えてるよね。
0292デフォルトの名無しさん
2006/08/23(水) 08:06:320293デフォルトの名無しさん
2006/08/25(金) 01:19:090294デフォルトの名無しさん
2006/09/11(月) 08:18:140295デフォルトの名無しさん
2006/09/11(月) 23:40:06大根でも突っ込んでしまえ。
0296デフォルトの名無しさん
2006/09/12(火) 14:24:14プロセスが 9 番受けてデタッチできずに死んでしまっても、
また起動すれば共有メモリ自体はまた正しくマップできますか?
共有メモリ自体が残っていることは問題ないとします。
0297デフォルトの名無しさん
2006/09/12(火) 14:27:29出来ますよ。共有ファイルの権限が変わってない限り。
System V IPCの共有メモリも同様。
0299デフォルトの名無しさん
2006/09/15(金) 19:08:21自分のファイル名(x.exe)を読み込んで
xの部分がAすなわちA.exeだったらaを実行して
xの部分がBすなわちB.exeだったらbを実行する
っていうようなCのプログラムを教えてください。
0300デフォルトの名無しさん
2006/09/15(金) 19:54:460301デフォルトの名無しさん
2006/09/15(金) 20:32:440302デフォルトの名無しさん
2006/09/15(金) 21:15:31マルチ乙
35 名前: デフォルトの名無しさん 投稿日: 2006/09/15(金) 19:06:52
おねがいします。
自分のファイル名(x.exe)を読み込んで
xの部分がAすなわちA.exeだったらaを実行して
xの部分がBすなわちB.exeだったらbを実行する
っていうようなCのプログラムを教えてください。
0303デフォルトの名無しさん
2006/09/15(金) 21:37:300304デフォルトの名無しさん
2006/09/15(金) 21:58:35ヒント以上だな。
0305デフォルトの名無しさん
2006/09/15(金) 22:01:41同意。
apacheで異常暴走したCGIをとめる時とか
スレッドよりマルチプロセスのほうが
気軽にkillできるということで・・
スレッドのほうがコストが低いとかスティーブンス本には
書いて歩けど中身がスレッドで見た目マルチプロセス
みたいな解はないもんかね。
スレッド単位でkillできる方法とかあれば
topをカスタマイズするとか
チャレンジしてみたいけどねーけどねー・・
0306デフォルトの名無しさん
2006/09/15(金) 22:53:13共有してるコンテキストがボロカスになりそうだ。
0307Motif?はぁ?
2006/09/15(金) 23:01:32て、思っていたが…書く羽目になりますた。orz
もち〜ふの処女用教科書とか、ありましたら教えてくだしあ
とりあえず今は、ここ↓で勉強中でし
http://home.soka.ac.jp/~unemi/Motif/example.html
0308デフォルトの名無しさん
2006/09/15(金) 23:03:590309デフォルトの名無しさん
2006/09/15(金) 23:32:02茨の道にようこそ。今時のLinuxに載っているようなMotifはVer2になっているから
ComboBoxやTabPageが使えたりして便利な反面、その辺りを説明している資料は殆どない罠。
0310デフォルトの名無しさん
2006/09/15(金) 23:35:55これからも訓練頑張って下さい。
0311デフォルトの名無しさん
2006/09/16(土) 11:25:27私ゃ素人でアレなんでつが、あの、開発環境っぽい
ぐれーど てえのは、皆さん普通に使いますか?
0312デフォルトの名無しさん
2006/09/16(土) 19:40:200313デフォルトの名無しさん
2006/09/16(土) 22:07:52かつて作ったが、今は(そのプロジェクトは終わっているので)作っていない。
>>311
私ゃ皆さんじゃないよ〜
>>310
何の訓練?
0314デフォルトの名無しさん
2006/09/17(日) 00:23:18それはGtk+というツールキットを使ったアプリのUI(ウィンドウ内の部品配置)
定義を対話的に作って、それをXMLで出力するもの。Motifには無縁の存在。
0315デフォルトの名無しさん
2006/09/17(日) 00:30:41そのXMLをパースしてmotifのウィジットを配置する関数を生成するジェネレータを作ればいい。
あなたは頭が固すぎる。
0316デフォルトの名無しさん
2006/09/17(日) 02:11:51仕事で似たようなことやってるが、不毛だぞ。
0317デフォルトの名無しさん
2006/09/20(水) 21:24:01九九の表を作成したいのですが、記述例を教えてください。
お願いします。
Whileとか使った方がいいようです。。。
できれば、説明もお願いします。
0318デフォルトの名無しさん
2006/09/20(水) 21:43:32$ for n in `seq 9`; do for m in `seq 9`; do echo -n `expr $n '*' $m` ""; done; echo ;done
man seq
man expr
0319デフォルトの名無しさん
2006/09/20(水) 21:56:35seqって可搬性あるんだっけ?
yes '' | cat -n | head -9 とか書けばいい?
0320デフォルトの名無しさん
2006/09/20(水) 22:13:45s/`seq 9`/{1..9}/g
かな?
0321デフォルトの名無しさん
2006/09/21(木) 07:58:39#! /bin/sh
if [ $# -lt 1 ]; then
echo missing operand 1>&2
exit 1
elif [ $# -gt 3 ]; then
echo extra operand 1>&2
exit 1
elif [ $# -eq 1 ]; then
FIRST=1
INC=1
LAST=$1
elif [ $# -eq 2 ]; then
FIRST=$1
INC=1
LAST=$2
elif [ $# -eq 3 ]; then
FIRST=$1
INC=$2
LAST=$3
fi
n=$FIRST
while [ "$n" -le "$LAST" ]; do
echo "$n"
n=`expr "$n" + "$INC"`
done
0322デフォルトの名無しさん
2006/09/21(木) 21:07:18考えてくださっているのですが、
IFやFOR等は使っちゃだめみたいなんです。
記述は、
#!/bin/bash
while [ ]
do
done
のような記述のみでつくれっていわれてるんです。
whileは自動的に表示結果に改行が入ってしまいますよね?
その改行をなくすにはどうしたらいいんでしょうか?
0323デフォルトの名無しさん
2006/09/21(木) 21:38:470324デフォルトの名無しさん
2006/09/21(木) 22:00:28echo -nを使う
0325デフォルトの名無しさん
2006/09/21(木) 22:07:030326デフォルトの名無しさん
2006/09/21(木) 22:33:040327デフォルトの名無しさん
2006/09/21(木) 23:03:53" "hage"
0328デフォルトの名無しさん
2006/09/23(土) 10:16:53-nを付けない。
0329デフォルトの名無しさん
2006/09/23(土) 10:50:330330デフォルトの名無しさん
2006/09/26(火) 13:16:41無事、宿題を終えました。
色々と教えてくださった方々感謝します。
0331デフォルトの名無しさん
2006/10/02(月) 23:08:27Makefileで環境変数(PATH)を変更したいのです。
現在設定されているPATHの先頭に/aaaを追加するには
どう記述すればよいですか
0332デフォルトの名無しさん
2006/10/02(月) 23:52:36PATH=$(PATH):/aaa
0333デフォルトの名無しさん
2006/10/02(月) 23:55:440334331
2006/10/03(火) 00:18:02試してみます。
0335デフォルトの名無しさん
2006/10/03(火) 09:41:22括弧つけろよ。
0336デフォルトの名無しさん
2006/10/04(水) 01:51:390337デフォルトの名無しさん
2006/10/04(水) 01:59:02動かしてないけど、連続した数の列を吐くスクリプトだな。
その上にある質問(>>317)への回答(>>318)に出てきたGNUのseq(やBSDの
jotだっけ?)は移植性がないので、スクリプトとして作ったわけ。
スクリプトのはじめの長いif文は引数の数によって、開始値・終了値・刻みを
セットしている。(case $# in...のほうが見やすいかも)
0338デフォルトの名無しさん
2006/10/04(水) 16:02:100339デフォルトの名無しさん
2006/10/04(水) 16:12:40case $# in
1) FIRST=1; INC=1; LAST=$1;;
2) FIRST=$1; INC=1; LAST=$2;;
3) FIRST=$1; INC=$2; LAST=$3;;
*)
[ $# -lt 1 ] && echo missing operand 1>&2
[ $# -gt 3 ] && echo missing operand 1>&2
exit 1;;
esac
0340デフォルトの名無しさん
2006/10/05(木) 10:21:440341デフォルトの名無しさん
2006/10/08(日) 01:31:24昨日プログラミングの講義で課題を出されて
eのx乗を求めるプログラムを作れと言われて
困ってます。昨日からずっと考えてるんですが
全くわかりません。
どなたか教えてもらえませんか?
0342デフォルトの名無しさん
2006/10/08(日) 01:48:320343デフォルトの名無しさん
2006/10/08(日) 01:49:04何を、どんな知識をベースに考えてたんだ?
単純に、こういうことなんじゃないのか?
http://www.google.co.jp/search?hl=ja&q=%22math.h%22+log&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0344デフォルトの名無しさん
2006/10/08(日) 02:08:30UNIX関係あるのか?
math.h使わないとして普通に考えても
0乗なら 1
1条なら e
x乗なら e^x
をしたらいいだけじゃないのか?
0345デフォルトの名無しさん
2006/10/08(日) 02:16:04つか宿題スレ池
0346デフォルトの名無しさん
2006/10/08(日) 02:22:40LINUXでやってます。
プログラミングの知識が乏しくて
プログラミングをかけないんです。
#include <math.h>
double log(double x);
って感じで書くんですけど・・・
その後がいまいちわからなくて・・・
0348デフォルトの名無しさん
2006/10/08(日) 02:41:500349デフォルトの名無しさん
2006/10/08(日) 03:13:130350デフォルトの名無しさん
2006/10/08(日) 03:16:420351デフォルトの名無しさん
2006/10/08(日) 05:41:590352デフォルトの名無しさん
2006/10/08(日) 06:06:21金払って勉強してるのに、なぜ答えてくれるかどうかもわからない2chなんかで聞くのか。
金払ってるんだから講師にでも聞けよ
0353デフォルトの名無しさん
2006/10/08(日) 10:22:06市民権のある立場を買ってると考えればよい。
0354デフォルトの名無しさん
2006/10/08(日) 13:26:51市民権というのは、citizenshipの訳語で、
政治参加の権利を持っている人のことだぞ。
ギリシャのポリス市民から来ている。
0355デフォルトの名無しさん
2006/10/08(日) 17:01:33どうでもいいよ。定義なんて。
0356デフォルトの名無しさん
2006/10/08(日) 17:07:05どうでもいいよ。お前の意見なんて
0357デフォルトの名無しさん
2006/10/08(日) 17:11:18じゃあわざわざwikipedia書くような労力払わんで下さいよ。
0358デフォルトの名無しさん
2006/10/08(日) 17:11:390359デフォルトの名無しさん
2006/10/09(月) 13:21:17Apacheモジュールからpostgresへつなげる処理を
作っているのですが、
Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された
という警告が出力されます。
こういう場合、何か回避するよい方法がありますでしょうか?
今のところpostgres側のヘッダ(port.h)に
#define closesocket pg_closesocket
とかすればよいのだろうかと考えていますがどのような影響があるかわからず躊躇しています。
・Make時のログ
In file included from /usr/local/include/postgresql/server/c.h:822,
from /usr/local/include/postgresql/server/postgres.h:48,
from mod_blog.c:9:
/usr/local/include/postgresql/server/port.h:273:1: warning: "closesocket" redefi ned
In file included from /usr/local/include/apache/httpd.h:29,
from mod_blog.c:2:
/usr/local/include/apache/ap_config.h:1084:1: warning: this is the location of t he previous definition
・ソースファイル(ヘッダ部)
#include <string.h>
#include "httpd.h"
#include "http_config.h"
#include "http_protocol.h"
#include "ap_config.h"
#include "http_log.h"
#include "libapreq/apache_request.h"
#include <postgres.h>
#include <libpq-fe.h>
<略>
0360デフォルトの名無しさん
2006/10/09(月) 13:22:350361359
2006/10/09(月) 13:29:00X Makeしたときに"closesocket"関数がpostgres.hとport.h内で再定義(redefined)された
○ Makeしたときに"closesocket"関数がap_config.hとport.h内で再定義(redefined)された
>>360
いやそれだと意味が...;
0362デフォルトの名無しさん
2006/10/09(月) 13:40:11自作モジュールでclosesocketを使わなければうまく行く。
(と言うか問題があればリンク時にこけるので取りあえず無視して良い)
0363デフォルトの名無しさん
2006/10/09(月) 13:40:14どう回避したいのかいってないから、警告を表示したくないと思われても仕方ない罠
0364デフォルトの名無しさん
2006/10/09(月) 13:41:04知らんのなら出てくんなや。と言う正論。
0365デフォルトの名無しさん
2006/10/09(月) 13:51:040366デフォルトの名無しさん
2006/10/09(月) 13:53:03そこそこ回答が上がってるわけですがw
0367デフォルトの名無しさん
2006/10/09(月) 13:56:450368359
2006/10/09(月) 13:57:12>>と言うか問題があればリンク時にこけるので取りあえず無視して良い)
なるほどー
今のところ、モジュール自体は動いているし
Makeがエラーを吐いてとまることもないので
実用上問題はないかも・・・と
とりあえず
postgresの関数の内部(PQfinishとか接続を切る系?)
などの中で該当関数が使われてないかをみて影響範囲を絞り込んでみます。
ありがとうございます。
>>363
そうですねー
重複しているclosesocket関数が、内部的に衝突・上書きされずに共存する回避の仕方
がないかということです。
0369デフォルトの名無しさん
2006/10/09(月) 14:17:22#define closesocket close
#endif
みたいな感じだと思うけどねー。
0370デフォルトの名無しさん
2006/10/10(火) 14:59:06っていう問題が学校で出たんですけど、誰か教えてくれませんか。
0371デフォルトの名無しさん
2006/10/10(火) 15:00:13先生に聞け
0372デフォルトの名無しさん
2006/10/10(火) 15:20:36アルファベットだけでも aAbBなのかAaBbなのかabABなのか
ABabなのかはロカールによって違う。
ロカール指定で済むなら、strcmpの代わりにstrcollを使えば
LC_COLLATEを見てくれるので話ははやいが。
0373デフォルトの名無しさん
2006/10/10(火) 16:01:450374デフォルトの名無しさん
2006/10/10(火) 16:04:310375デフォルトの名無しさん
2006/10/10(火) 22:22:530376デフォルトの名無しさん
2006/10/11(水) 02:34:40system("sort");
0377デフォルトの名無しさん
2006/10/11(水) 04:56:510378デフォルトの名無しさん
2006/10/11(水) 23:15:38ぬるい。
どうせなら文字列は可変長、リストに格納しつつソートとか
のほうが実践的
0379デフォルトの名無しさん
2006/10/11(水) 23:51:43実戦で底までせなあかん局面がない。
0380デフォルトの名無しさん
2006/10/12(木) 01:00:060381デフォルトの名無しさん
2006/10/19(木) 11:41:06subjectの入力となりました。
mailコマンドを実行したわけでもなく原因がわかりません。
ご教授よろしくお願いします。
0382デフォルトの名無しさん
2006/10/19(木) 11:46:270383デフォルトの名無しさん
2006/10/19(木) 11:53:58鼬害。シェルにおける'*'の意味を考えれば、何が起きたか判るはず。
0384デフォルトの名無しさん
2006/10/19(木) 22:05:28それを説明しろ
できねんだろ?
0385デフォルトの名無しさん
2006/10/20(金) 00:17:470386デフォルトの名無しさん
2006/10/21(土) 22:48:10cout << "こんにちは" << endl;
を含むコードをコンパイルし、実行したところ、"こんにちは"の部分が文字化けして、読めません。
OSはCent OS4.3です。
0387386
2006/10/21(土) 22:49:390388デフォルトの名無しさん
2006/10/21(土) 23:03:29ロケールを設定。
ttp://www.google.co.jp/search?q=C%2B%2B+locale
0389デフォルトの名無しさん
2006/10/22(日) 11:34:31それはどのようにして実現できるのでしょうか?
0390デフォルトの名無しさん
2006/10/22(日) 12:06:50ウィンドウ環境によって異なります。
0391デフォルトの名無しさん
2006/10/22(日) 12:42:58汎用的な方法は無いのでしょうか?
0392デフォルトの名無しさん
2006/10/22(日) 13:00:05window managerにそう指定する。
0393デフォルトの名無しさん
2006/10/22(日) 13:19:10どこが汎用的なんだ?
>>391
やったことないけど、Windowが隠されたら最前面にマップするようにしたら?
0394デフォルトの名無しさん
2006/10/22(日) 13:54:082つのアプリがそれやり出したらとっても楽しいことになりそうだな
0395デフォルトの名無しさん
2006/10/22(日) 13:54:250396デフォルトの名無しさん
2006/10/22(日) 13:57:40重なったWindowのプロパティ見れば?
0397デフォルトの名無しさん
2006/10/22(日) 14:01:27素朴な疑問だが、どんなウインドウシステムを仮定している?
0398デフォルトの名無しさん
2006/10/22(日) 14:10:56汎用的な方法なんだから何も仮定してるわけないだろ。
それでプロパティってのが何のことなのかはさっぱりわからんが
0399デフォルトの名無しさん
2006/10/22(日) 14:16:43あとはWM次第みたいな
0400デフォルトの名無しさん
2006/10/22(日) 14:22:38それ>>392じゃないの?
違いは「Xなら」と「あとはWM次第」って予防線?
0401デフォルトの名無しさん
2006/10/22(日) 14:26:030402デフォルトの名無しさん
2006/10/22(日) 17:50:020403デフォルトの名無しさん
2006/10/22(日) 20:27:21環境を選んでる時点で汎用ではないだろ
0404デフォルトの名無しさん
2006/10/23(月) 23:08:260405デフォルトの名無しさん
2006/10/26(木) 05:06:240406デフォルトの名無しさん
2006/10/26(木) 07:44:010407デフォルトの名無しさん
2006/10/26(木) 15:31:08外部からの指示により、スクリーンサイズと同じサイズの背景透
過なウィンドウを作成したいのですが良い方法はありませんか?
やりたいことは、画面上は他のウィンドウが表示されているけど
画面をクリックしたらそのイベントを他のウィンドウに渡さず透
過なウィンドウで受けとって座標位置にあった処理をしたいので
す。
デプス1のピクスマップをつくってXShapeCombineMask()を使
用したら透明なウィンドウはできたのですが、画面クリックする
と透過された他のウィンドウがイベント拾っちゃいました(TT
0408386
2006/10/29(日) 15:15:49レスが遅くなりましたが、ありがとうございます。
なお、ロケール設定後も文字化けして表示してしまって
いました。その後、SSHクライアントが日本語に対応して
いなかったためだと分かり、やっと解決しました。
0409デフォルトの名無しさん
2006/10/29(日) 18:07:23xwininfoのソース嫁
0410デフォルトの名無しさん
2006/11/01(水) 16:26:12それは XGrabPointer使えってことだよね。>>407 が考えていることとは微妙に違う気がする。
0411デフォルトの名無しさん
2006/11/01(水) 19:49:03XShapeで作成したウィンドウは、下のレイヤのウィンドウを透過しているのではなくて、ビットマスクによって自身の
ウィンドウの形状を変更(クリッピング)している。ウィンドウが無いとみなされているので、下のレイヤのウィンドウに
イベントが通知される。
参考になりそうなのはkinput2等、IMのソース。
・class=InputOnly, override_redirect=True なウィンドウを作成すると、非表示のウィンドウでマウス入力が取れる。
・非表示のウィンドウはフォーカスを持たないため、キー入力を取るためには別途 XGrabKeyboard すれば桶。
0412デフォルトの名無しさん
2006/11/02(木) 22:15:24一応今までは、UDPだったので、RAWソケットを使ってIPパケットを見ていたのですが、
今度、TCPでもやることになってしまいました。
RAWソケットを使わず、取得する方法は無いでしょうか?
0413デフォルトの名無しさん
2006/11/02(木) 22:26:55Packet Socket
0414デフォルトの名無しさん
2006/11/02(木) 22:30:260415デフォルトの名無しさん
2006/11/02(木) 22:41:49×受信メッセージから
○受信ソケットから
getpeeraddr(2)
0416デフォルトの名無しさん
2006/11/02(木) 23:35:440417デフォルトの名無しさん
2006/11/04(土) 10:27:33質問を明確にしたほうがいいんじゃない?
受信パケットのDestinationってことは、自ノードのアドレスってことだよね
複数アドレスがある場合に特定する方法があれば俺も知りたい(以前調べてわからんかった)
0418デフォルトの名無しさん
2006/11/04(土) 11:08:42ギャグですか?
0419412です
2006/11/04(土) 14:18:42getsocknameで、自分の情報(受信ソケットの場合Destination IPを取得)ということですね。
どうもありがとうございます。
>>417
そうです。受信パケットのDestinationってことです。もう少しこの部分を強調すれば
良かったですね。
>>413
パケットソケットだと、RAW ソケットになるとおもいますが、私の勘違い?
0420デフォルトの名無しさん
2006/11/05(日) 12:20:080421デフォルトの名無しさん
2006/11/05(日) 12:40:520422デフォルトの名無しさん
2006/11/05(日) 12:55:23ありがとうございます。やってみます。
0423デフォルトの名無しさん
2006/11/09(木) 14:50:43つまりもう一度closeを呼ぶべきかということですが。
EBADF, EINTRの場合は自明として、それ以外の場合は?
0424デフォルトの名無しさん
2006/11/09(木) 23:12:35生きてるんじゃないかい。
0425デフォルトの名無しさん
2006/11/09(木) 23:20:260426デフォルトの名無しさん
2006/11/10(金) 00:18:02複数のプロセスがopenしてる可能性を考えたことはないのか?
システムリソースとプロセスリソースは別物だって考えたことはないのか?
Unix系前提で話をすれば...
o closeすればプロセスリソースは破棄.
o 該当資源を最後にcloseしたやつは待たされるかもしれんが
プロセスリソースは破棄されている(システムコールから戻ってくれば)
o 残ったI/O処理は破棄される(ドライバが正常/以上完了すれば)
o ドライバの作りによっては, プロセスはゾンビになってkillすらできない
o 最悪の場合システムダウン
0427デフォルトの名無しさん
2006/11/10(金) 07:18:210428デフォルトの名無しさん
2006/11/10(金) 12:16:43複数のプロセスがopenしていても、close したプロセスでは
ファイルディスクプリタは無効になるんじゃない?
だから>>425は別に問題ないように思うけど。
0429デフォルトの名無しさん
2006/11/10(金) 12:21:400430デフォルトの名無しさん
2006/11/10(金) 12:23:53もう一度呼ぶべきかどうかは俺にはわからんが、気になるなら
成功かEBADFのどちらかになるまでリトライすりゃいいんじゃね?
0431デフォルトの名無しさん
2006/11/10(金) 12:24:100432デフォルトの名無しさん
2006/11/15(水) 20:35:50しらんぷりしてりゃいいんだよ
0433デフォルトの名無しさん
2006/11/18(土) 18:51:540434デフォルトの名無しさん
2006/11/18(土) 21:33:250435デフォルトの名無しさん
2006/11/19(日) 00:32:140436デフォルトの名無しさん
2006/11/19(日) 02:17:14間違ったファイルデスクリプタはどうしようもないやん
0437デフォルトの名無しさん
2006/11/23(木) 09:53:13シグナルを受け取ったら終了処理、っていう感じでいいんでしょうか
0438デフォルトの名無しさん
2006/11/23(木) 10:26:44例えば、Debian GNU/Linuxだと、
start-stop-daemonコマンドで--stopすることになっているけれど、
この時の送られるシグナルはディフォールトだと、SIGTERM。
FreeBSDでshutdownする時も、SIGTERMが送られる。
kill(1)のディフォールトがSIGTERMだかね。
0439デフォルトの名無しさん
2006/11/23(木) 10:32:110440デフォルトの名無しさん
2006/11/24(金) 08:29:20適切な時にフラグをチェックすると楽
0441デフォルトの名無しさん
2006/11/24(金) 09:41:33フォアグラウンドで実行することが多いから、
Ctrl-Cで止めた時の、SIGINTも同じハンドラにしておくと便利。
0442デフォルトの名無しさん
2006/11/27(月) 08:46:54シグナルが非同期、というのは
メインスレッドでハンドラが実行される
ということですよね?
0443デフォルトの名無しさん
2006/11/27(月) 09:03:23どのスレッドがシグナルを受け取るかはOSにより異なる
0444デフォルトの名無しさん
2006/11/27(月) 15:34:270445デフォルトの名無しさん
2006/11/27(月) 19:15:05普通はメインスレッド以外ではpthread_killでメインスレッドにシグナルを
ルーティングするだけにして、そちらで処理する。
SEGVとかは原因となったスレッドに通知されるのでその限りではないが。
0446デフォルトの名無しさん
2006/11/27(月) 19:28:590447デフォルトの名無しさん
2006/12/02(土) 00:39:35RAID5の書き込みで、400MB/secも速度が出てしまいちょっと
長い時間データの読み書きを1プロセスが行うだけでIOを占拠してしまいます。
そこで1プロセスで使用できるディスクの速度を75MB/sec固定にしたいのですが
どうやってやればいいのかご存知の片いませんか?
0448デフォルトの名無しさん
2006/12/02(土) 01:32:530449デフォルトの名無しさん
2006/12/02(土) 01:33:23で、あんたの使っているOSは?
0450デフォルトの名無しさん
2006/12/02(土) 01:55:540451デフォルトの名無しさん
2006/12/02(土) 02:00:53それだと平均75MB/sec出ないのですよ
Readだけで合わせても、30MBと150MBとか
わかれてしまって困ってます。均一に資源を割り当てたいが
どうすればいいのかさっぱりわかりません
0452デフォルトの名無しさん
2006/12/02(土) 02:23:060453デフォルトの名無しさん
2006/12/02(土) 08:14:13設定ファイルを読み込み、解析するためのライブラリはないでしょうか?
0454デフォルトの名無しさん
2006/12/02(土) 08:58:22あります。
うちのプロジェクトではみんなが好き勝手に設定ファイルを作りたがるので、
切れて共通で使えるようなライブラリを提供してフォーマットを固定にしました。
0455デフォルトの名無しさん
2006/12/02(土) 12:45:51XMLで書けばいいじゃん
最終的にノード単位で結合すればいいんだし
もし設定ファイル読むのに遅いとかいいだしたら
勝手にやって暮れだが
0456デフォルトの名無しさん
2006/12/04(月) 09:32:42YAMLあたりで。
0457デフォルトの名無しさん
2006/12/04(月) 18:18:360458デフォルトの名無しさん
2006/12/05(火) 05:23:11C なら libConfuse とかってライブラリがあるよ。
あとは Boost の program_options とかどうよ?
0459デフォルトの名無しさん
2006/12/05(火) 12:08:08普段Microsoft Visual C++を使って数値演算をしているのですが、
演算サーバーの方が処理が早いということで、UNIXを使い始めたところ、
Visual C++で走るプログラムがUNIXとなると実行結果に『NaNQ』が出てきてしまいます。
ソースは同じものを使っているはずなのに。。。
UNIXでのコンパイルは成功しています。
原因としては何が考えられるのでしょう??
0460デフォルトの名無しさん
2006/12/05(火) 12:26:53当てずっぽうだけど、改行コード/バイトオーダー/データモデルの何れかじゃない。
取り敢えず改行コードを LF のみに変換してみては?
0461デフォルトの名無しさん
2006/12/05(火) 12:42:580462デフォルトの名無しさん
2006/12/05(火) 12:54:12普通にどっかで桁落ちしてるんじゃねぇの?
0463デフォルトの名無しさん
2006/12/05(火) 13:06:311:4個の1桁の数字からなる順列を乱数で生成
(4個の数字は全て異なる)
2:4個の数字の順列を入力
3:生成した順列と入力の順列を比較
(数と位置があっている「hit])
(数はあるけれど位置が違う「blow])
4:hit数とblow数を表示
5:順列があたるまで入力を繰り返す
実行例
Number?:0123
Hits:0,Blows:1
Number?:0124
Hits:0,Blows:0
Number?:3567
Hits:3,Blows:0
Number?:3568
Hits:3,Blows:0
Number?:3569
Hits:4,Blows:0
Trials:5
0464デフォルトの名無しさん
2006/12/05(火) 13:08:49宿題スレ行けよ
0465デフォルトの名無しさん
2006/12/05(火) 14:09:51そういうときはFPUのCWを再設定しろ。
ってばっちゃがいってた。
どうでもいいけどQNaNじゃないの?
0466デフォルトの名無しさん
2006/12/09(土) 16:31:42画像ファイルの読み書き・描画などを行うライブラリはありますか?(GDよりも高機能で
できればC/C++等で使えるものでありたいのですが、GIMPのスクリプトとかになるのでしょうか。
0467デフォルトの名無しさん
2006/12/09(土) 17:11:330468467
2006/12/09(土) 17:13:10で、なにそれ?
0469デフォルトの名無しさん
2006/12/09(土) 17:48:10cairoとかになるのかなぁ
0470デフォルトの名無しさん
2006/12/09(土) 17:53:05画像開いてちょっと加工するならImageMagickとか・・・
0471デフォルトの名無しさん
2006/12/12(火) 13:17:21検索して調べたところ
task_structという構造体にプロセス情報が格納されているということは分かったのですが、
検索したサイト先であげられているヘッダファイル "include/linux/sched.h" 内に
task_structに関する記述が無いのです。
上記構造体を利用するためには、
何か別の手段をとらないといけないのでしょうか?
カーネルバージョンは"2.4.21-20.EL"です
分かる方いましたらよろしくお願いします。
0472デフォルトの名無しさん
2006/12/12(火) 13:24:27/procとか見ただけじゃいかんの?
0473デフォルトの名無しさん
2006/12/12(火) 13:36:11というのがあるわけだが。
0475デフォルトの名無しさん
2006/12/12(火) 14:07:55お礼だけ言って内容は無視するのかよ!
0476471
2006/12/12(火) 14:44:05申し訳ないです。
やりたいことなのですが
psコマンドで表示されるプロセスのプロセス名を全て取得し、
指定したプロセス名が存在したらそのプロセス開始時間を取得する。
という処理をC言語で実装したいのです。
なので>>471の内容で質問をしました。
>>472-473さんの仰るように/procを参照しようとすると
何らかの手段で全プロセスのプロセス番号を取得する必要があると思うのですが
c言語でそのようなことは可能なのでしょうか?
0477デフォルトの名無しさん
2006/12/12(火) 14:50:00ttp://www.linux.or.jp/JM/html/LDP_man-pages/man5/proc.5.html
0478デフォルトの名無しさん
2006/12/12(火) 14:50:49該当するのが見つかったら、
/proc/該当するPID/statを読んで、start_timeを調べろ。
/usr/src/linux-*/fs/proc/array.cを読めばどれか分かる。
0479デフォルトの名無しさん
2006/12/12(火) 17:27:38psのソース嫁
0480デフォルトの名無しさん
2006/12/12(火) 19:01:170481デフォルトの名無しさん
2006/12/12(火) 19:07:450482デフォルトの名無しさん
2006/12/12(火) 22:55:57> >>472-473さんの仰るように/procを参照しようとすると
> 何らかの手段で全プロセスのプロセス番号を取得する必要があると思うのですが
> c言語でそのようなことは可能なのでしょうか?
それが/procを参照するってことだ。
opendir() & readdir()
0483デフォルトの名無しさん
2006/12/13(水) 05:48:39と書き掛けて気付く。それだったらpsでいいね。
0484デフォルトの名無しさん
2006/12/14(木) 22:29:15WindowsでDLL呼び出すのと同じくらいふつーに使う気がする
0485デフォルトの名無しさん
2006/12/14(木) 22:35:46見に行ったときにそのプロセスがまだある保証はないから気をつけよう。
0486デフォルトの名無しさん
2006/12/14(木) 23:04:570487デフォルトの名無しさん
2006/12/15(金) 01:31:34しかしそれを意図して書式化されていない場合とかlsのようにオプションに
気をつけないと情報ロスが存在しうる場合は注意が必要だったりするし、
やっぱあまり普通には使わないな。
スクリプトなんかでそれで済んじゃう場合はそれでもいいけど。
特にpsの出力なんかパースするくらいなら素直に/procを読むか
kvm_なんたらを使う方が変なところで悩まなくてよい。
0488デフォルトの名無しさん
2006/12/15(金) 02:03:35もしかして、フォーマットを木目細かく指定できることをご存知内のだろうか。
0489デフォルトの名無しさん
2006/12/15(金) 07:27:530490デフォルトの名無しさん
2006/12/15(金) 09:30:270491デフォルトの名無しさん
2006/12/16(土) 10:58:01> 分かりやすくMakefileの書き方が載ってるサイトがあれば教えてください
GNU makeのinfoがいいと思います。入門にも、リファレンスにもできる。
↓まずはこの節から。
Makefile入門
http://www.ecoop.net/coop/translated/GNUMake3.77/make_2.jp.html#SEC4
0492デフォルトの名無しさん
2006/12/16(土) 14:08:41ありがとうございます。
今から挑戦してきますね。
0493466
2006/12/19(火) 07:45:47これを理解しないと次の授業からついてこれなくなるといわれたのですが、
何をしているのかが全くわかりません。どなたかコメントで解説つけていただけないでしょうか。
0494デフォルトの名無しさん
2006/12/19(火) 08:02:040495デフォルトの名無しさん
2006/12/19(火) 09:23:16LOOP1:
fprintf(stdout," followed by any nonnumeric character:");
if(scanf("%d",&x) != 1){ goto LOOP1END; }
Insert(&root, x);
goto LOOP1;
LOOP1END:
ワロタ
0496デフォルトの名無しさん
2006/12/19(火) 09:34:130497デフォルトの名無しさん
2006/12/23(土) 05:50:37ファイル記述子の必要な関数fsyncを使いたいのですが、ファイル記述子は
どのように取得すればよいのでしょうか?
0498デフォルトの名無しさん
2006/12/23(土) 10:34:360499デフォルトの名無しさん
2006/12/23(土) 11:05:58stream.rdbuf()->fd()
0500デフォルトの名無しさん
2006/12/23(土) 11:35:470501デフォルトの名無しさん
2006/12/23(土) 14:39:44windowsだとこうみたいだね。
0502デフォルトの名無しさん
2006/12/24(日) 23:34:32/proc/<pid>/stat/utime
/proc/<pid>/stat/stime
ってどの関数がどのくらいの周期で
書き込んでいるのでしょうか?
0503デフォルトの名無しさん
2006/12/24(日) 23:50:090504デフォルトの名無しさん
2006/12/25(月) 00:00:32scheduler_tick でしょうか?それとも schedule ?
それらしき箇所が見あたりません。
できれば、何という関数で書き込んでいるのか教えてください。
0505デフォルトの名無しさん
2006/12/25(月) 01:04:110506デフォルトの名無しさん
2006/12/25(月) 11:30:470507デフォルトの名無しさん
2006/12/25(月) 11:33:27/procを勘違いしている可能性もあるのか。
0508デフォルトの名無しさん
2006/12/25(月) 12:45:240509502です
2006/12/25(月) 12:46:56>そういうのって、読み出すときに値(カウンタ)を取得して返すんじゃないのか?
cat /proc/<PID>/stat を実行した時に cat が値を読み込むと言うことでしょうか?
■506さん
>ほんとにファイルがあるわけじゃないしねぇ・・・
たぶん、その辺が理解できていないのだと思われます。
#自分で書くのもなんですが。
■507さん
>/procを勘違いしている可能性もあるのか。
勘違いしています。もし、その辺のことが詳しく記載されている
書物があればご教示下さい。
すみません。(;。;)
0510デフォルトの名無しさん
2006/12/25(月) 12:54:16/procは本当のファイルじゃなくて、カーネル内の情報を取り出すための仕組み。
それらを読もうとすることはカーネル内のデータを取り出す事に相当する。
そこらへんはドライバレベルでうまいことやってるので、
読み込んでるプログラムからは本当のファイルなのか、
/procのような仮想的なファイルなのかは見分けがつかない。
0511デフォルトの名無しさん
2006/12/25(月) 12:55:48ファイルじゃなくて、ファイルのように振る舞うもの。
ファイルだって実際ファイルがあるんじゃなくて、
ファイルシステムがあるかのようにdisk I/Oしてるんだしね。
0512502です
2006/12/26(火) 00:36:31有り難うございます
もう少し修行を積んで再度出直します。
0513デフォルトの名無しさん
2006/12/28(木) 20:16:54変換の状態 (shift の状態など) を,丸々コピー (clone) して
新しいディスクリプタを作成することってできないですよね?できないですよね……
0514デフォルトの名無しさん
2006/12/28(木) 20:26:49ウソ
0515デフォルトの名無しさん
2007/01/03(水) 02:08:18crypt_des.c
を見てるんですが export されているのは crypt_des だけなんですけど
do_des とか des_chipher とかを export しなおして
自分のプログラムから使っても大丈夫ですか?
コメントには輸出規制が云々と書かれているのでちょっと心配です。
0516デフォルトの名無しさん
2007/01/03(水) 02:47:380517デフォルトの名無しさん
2007/01/03(水) 10:22:490518デフォルトの名無しさん
2007/01/03(水) 19:33:54グレーゾーンにして上手く逃げているんじゃないかな
だからdo_desを勝手に使うとまずいと思うよ
export禁止なのが輸出禁止なのか文字通りexport禁止なのかが良く分からないね
対象は米国外輸出だったと思うから北朝鮮とかリビアは関係ないんじゃないかな
0519デフォルトの名無しさん
2007/01/03(水) 19:48:16IE5.01あたりで暗号強度が128bitになったのはそのおかげだし
0520デフォルトの名無しさん
2007/01/04(木) 08:23:13親プロセスに対するシグナルは全ての子プロセスにも送られるんでしょうか?
0521デフォルトの名無しさん
2007/01/04(木) 19:45:110522デフォルトの名無しさん
2007/01/04(木) 20:03:000523デフォルトの名無しさん
2007/01/04(木) 20:05:120524デフォルトの名無しさん
2007/01/05(金) 01:02:15自分でシグナルハンドリングしてしまえばいい
0525デフォルトの名無しさん
2007/01/05(金) 04:38:320526デフォルトの名無しさん
2007/01/11(木) 00:53:23デーモンプロセスを作ろうと思って
childをforkして親プロセスを終了させたりとか
詳解UNIXプログラミング通りにやりました。
どうやらうまくいったっぽいのですが、
できたプログラムがすぐにExitして終了してしまいます。
while(1)
とかでループしたりとかすると、cpu使用率が90%以上になってしまいました。
目標としては、STDINからの入力を待って、いろいろ処理した後
STDOUTに結果を返して再び入力待ちに移行するデーモンを作りたいのですが、
SIGIOを感知するまでpauseするというところまではなんとなくわかった
(つもり)なのですが、
参考になるソースコードや何かヒントだけでもいただけませんでしょうか
よろしくお願いします。
0527デフォルトの名無しさん
2007/01/11(木) 01:03:580528デフォルトの名無しさん
2007/01/11(木) 01:23:410529デフォルトの名無しさん
2007/01/11(木) 01:43:08非同期IO使ってるんじゃなければSIGIOは関係ないんじゃないの
0530デフォルトの名無しさん
2007/01/11(木) 02:17:38> 参考になるソースコード
tail -f とかどうよ。
0531デフォルトの名無しさん
2007/01/11(木) 11:53:540532デフォルトの名無しさん
2007/01/11(木) 20:14:52俺は当然ここだぜ。http://www.unix.co.jp/
0533526
2007/01/12(金) 00:32:43>>527
pause()でどうやらcpu使用率0%で静止してくれました。
sleep(1)だと一瞬でsleepがとかれるみたいで・・
>select(2)
manをよんでみましたーまだよく理解できてませんが試してみます。
>tail -f
ううむなるほど、ありがとうございます。srcをあさってみます
>>529
そうですね...
なんとなくソケットのListenみたいなもののほうが近い気がしてきました。
スティーブンス本のネトワク2巻、IPCあたりを読み込んでみます。
ありがとうございましたー
0534デフォルトの名無しさん
2007/01/12(金) 06:06:30他のスレッドの終了を待つような処理は
while(スレッドの終了フラグ){
sleep(1);
}
とかいう感じで待つしかないんでしょうか?
0535デフォルトの名無しさん
2007/01/12(金) 06:11:060536デフォルトの名無しさん
2007/01/12(金) 06:34:33ちょっと調べてみましたがデタッチについても理解していませんでした
とりあえず上の質問はナシということでお願いします
0537デフォルトの名無しさん
2007/01/20(土) 02:55:580538デフォルトの名無しさん
2007/01/22(月) 00:04:02C言語のソースをWindows PCにてCVS管理しています。
下記のような段取りでやっているのですが、初心者のため、
詳しい皆さんはどんな手順で行っているのか知りたいと思います。
効率よくできる方法、一般的な方法(下記のような手順はおかしい、etc)等、
もしあればご教授いただきたく。
�@必要なソースをチェックアウトし、Windows PCにて修正(エクリプス使用)
�A修正したファイルをFTPでUNIXサーバにアップロード
�BUNIX上でmakeを使用しコンパイル
�CUNIX上で稼動確認し、問題なければソースをチェックイン
使用している環境は。。。
CVS用マシン ・・・ Windows XP
ソース修正用マシン ・・・ Windows 2000
実際に稼動するサーバ ・・・ HP-UX 11i v2
0539デフォルトの名無しさん
2007/01/22(月) 00:18:430540デフォルトの名無しさん
2007/01/22(月) 00:19:04・Unix上で編集しない理由は?
・稼動確認前にコミットしない理由は?
・最終確認をexport版で行なわない理由は?
0541デフォルトの名無しさん
2007/01/22(月) 00:26:470542デフォルトの名無しさん
2007/01/22(月) 00:39:23稼動確認前にコミットはしねぇだろ。
複数人で開発しているのならなおさら。
チェックアウトしてテストしようとして担当外のところが問題で
うごかなかったら普通きれるぞ。
後なんだexport版って?
0543デフォルトの名無しさん
2007/01/22(月) 00:44:24いちいちftpする手間がなくなってストレスがかなり減るぜ。
0544デフォルトの名無しさん
2007/01/22(月) 00:46:37>export版
cvs exportで取り出したもの。CVSディレクトリがつかないから、リリース用に使うのに都合がいい。
>稼動確認前にコミット
何のためにブランチがあるとお思いで?
稼動確認を行なった版が管理されないとしたら、稼動確認のエビデンスをどうやって残すの?
#まぁ、コンパイルが通るかどうか位は当然コミット前にやるとして。
0545デフォルトの名無しさん
2007/01/22(月) 00:49:100546デフォルトの名無しさん
2007/01/22(月) 00:53:160547デフォルトの名無しさん
2007/01/22(月) 01:00:06ブランチはなんの関係があるんだ?
コミットの度にブランチ切ってんのか?笑
0548デフォルトの名無しさん
2007/01/22(月) 01:15:05安定するまではブランチで作業するし、他人はそのブランチを使わない。
それだけのこと。
最終版をexportでやるのは、開発機とリリース機が違うときに便利。
それ以外では、リリース版をアーカイブするときにCVSディレクトリが邪魔にならずに済む程度のメリット。
0549デフォルトの名無しさん
2007/01/22(月) 01:17:560550デフォルトの名無しさん
2007/01/22(月) 08:59:050551デフォルトの名無しさん
2007/01/22(月) 15:04:08errno=22(Invalid argument) のエラーになってしまいます。
#include <errno.h>
#include <sys/quota.h>
int main( void ) {
int result;
struct dqblk quotaStatus;
result = quotactl( QCMD(Q_GETQUOTA,USRQUOTA), "/dev/hda8", 500, (caddr_t)"aStatus );
printf("result: %d, errno: %d: %s¥n", result, errno, strerror(errno));
return 0;
}
/dev/hda8(/home) に /home/aquota.user /home/aquota.group は存在します。
UID 500のユーザも存在します。repquota -a や edquota admin も問題ありません。
quotaの設定は以下のような手順で行いました。
/etc/fstab の /home のところに defaults,noatime,usrquota,grpquota を記述
mount -o remount /home
touch /home/aquota.user
touch /home/aquota.group
chmod 600 /home/aquota.*
quotacheck -mugv /home
quotaon -auvg
どなたか原因分かりませんか?
0552デフォルトの名無しさん
2007/01/22(月) 15:32:42ハードウェアIDなどを組み込んでコンパイルしたいのですが、
ハードウェア依存で、できるだけ高速で取得でき、
、呼び出し時間の短いシステムコールなどはありますでしょうか?
0553デフォルトの名無しさん
2007/01/22(月) 18:28:00激しく環境依存なので OS 次第じゃないかな。
dmesg とか sysctl とかの出力は使えそうですか?
0554デフォルトの名無しさん
2007/01/22(月) 18:49:07他にはNICのMACアドレスとか
替えられない訳じゃないけど
0555デフォルトの名無しさん
2007/01/22(月) 19:23:27機械の故障でユーザが代替品を使用せざるを得ない場合などに備えて、
マシン側で変更できるものが望ましい。
たとえばNICのMACアドレスなんかはそれを見てるものが昔からあるので
ほとんどのもので変更可能になっている。
0556デフォルトの名無しさん
2007/01/22(月) 19:38:590557デフォルトの名無しさん
2007/01/22(月) 20:16:090558デフォルトの名無しさん
2007/01/22(月) 21:44:19どうもありがとうございます。
システムが飛んだら再コンパイル必須の使い切りシステムなので、HDDのmbrから調べてみます。
0559デフォルトの名無しさん
2007/01/22(月) 21:46:180560デフォルトの名無しさん
2007/01/22(月) 21:50:51まずいです
通常は変更不能のものってありますか?
0561デフォルトの名無しさん
2007/01/22(月) 21:54:000562デフォルトの名無しさん
2007/01/23(火) 00:18:55そこまで厳密に制限したいのであれば、ハードウェアの
色々な情報をまとめて md5 してみるとかどうでしょう?
もちろん md5 の値をさらに可逆の暗号処理すると良いですね。
0563デフォルトの名無しさん
2007/01/23(火) 00:44:37cat /proc/cpuinfo とか
lspci -vs 00:00.0 とか
そんなのをmd5sumすれば?
0564562
2007/01/23(火) 01:35:14色々と漏れちゃうので、ちょっとした計算式でシフトできたりすると
良いかなぁと思ったのです。気にしすぎかな?
0565デフォルトの名無しさん
2007/01/23(火) 02:45:200566デフォルトの名無しさん
2007/01/23(火) 04:22:370567551
2007/01/23(火) 06:07:52#include <sys/quota.h> の前に
#define _LINUX_QUOTA_VERSION 2 を付けてやればOKでした。
0568デフォルトの名無しさん
2007/01/23(火) 07:32:24もしLAN常時接続が可能ならサーバー側にDB用意して
アクティベーションしないと使えないようにするとか
0569デフォルトの名無しさん
2007/01/23(火) 08:27:050570デフォルトの名無しさん
2007/02/04(日) 17:49:07初心者ですまそ
0571デフォルトの名無しさん
2007/02/04(日) 17:55:13ttp://www.paw.hi-ho.ne.jp/takadayouhei/technic/5.html
0572デフォルトの名無しさん
2007/02/04(日) 17:55:190573デフォルトの名無しさん
2007/02/04(日) 17:55:24pがつくかつかないか。つまり、path探索をするかしないか。
0575デフォルトの名無しさん
2007/02/04(日) 18:02:37てこと。
0576570
2007/02/04(日) 18:04:19なるほど〜分かりました。
ありがとうございます
0577デフォルトの名無しさん
2007/02/04(日) 18:27:350578デフォルトの名無しさん
2007/02/07(水) 18:16:190579デフォルトの名無しさん
2007/02/07(水) 18:25:520580デフォルトの名無しさん
2007/02/07(水) 18:26:410581デフォルトの名無しさん
2007/02/07(水) 18:29:04シンボルもあるだろうね。
あと、-gオプション。
0582デフォルトの名無しさん
2007/02/07(水) 19:09:400583578
2007/02/07(水) 20:53:560584デフォルトの名無しさん
2007/02/07(水) 22:37:330585デフォルトの名無しさん
2007/02/09(金) 05:26:16スレッドベースのハンドラを使うとたくさんのソケットがある分スレッド生成にコストがかかりそうですし
シグナルベースよりはepoll()やkqueue()の方が効率的なのかなーと思ってはいるんですが
最近AIOに興味を持ってこんなことを妄想してたんですが皆さんはどう思われます?
0586デフォルトの名無しさん
2007/02/09(金) 20:31:470587デフォルトの名無しさん
2007/02/10(土) 05:05:17便利でいいなぁ。Linuxにもこんなシステムコールあればいいのに。
0588538
2007/02/10(土) 07:00:49アドバイスありがとうございます。
特に、マウントするというやり方は、当方まったく気がつきませんでした。
いろんなご意見いただいてありがたかったです。
今後も効率いい作業方法を意識していろいろtryしてみます
0589デフォルトの名無しさん
2007/02/15(木) 06:14:56スタック使い切って死にそうなので大量のセッション管理には向かないのかな
0590デフォルトの名無しさん
2007/02/15(木) 08:06:43なんでユーザプロセスのスレッドなんか生成しなきゃならん。
0591デフォルトの名無しさん
2007/02/16(金) 16:07:36それはWin9xのWinsock2-overlappedI/O実装
0592デフォルトの名無しさん
2007/02/20(火) 00:48:160593デフォルトの名無しさん
2007/02/20(火) 01:30:340594デフォルトの名無しさん
2007/02/20(火) 01:53:080595デフォルトの名無しさん
2007/02/20(火) 15:17:140596デフォルトの名無しさん
2007/02/21(水) 00:39:37あと、最後に;(セミコロン)をつけるのは何のときで、つけないのが何のときか教えてください。
教科書見てもイマイチよくわからなくて・・・
0597デフォルトの名無しさん
2007/02/21(水) 00:50:04とりあえず使おうとしてる言語はなんなのか言ってみ
シェルのことか?
0598デフォルトの名無しさん
2007/02/21(水) 00:54:39めっちゃ基礎的なことだけどおねがいします。
0599デフォルトの名無しさん
2007/02/21(水) 01:08:32while (式) 文
「式を評価(値を求めること)し、それが0でない場合は 文を実行」
を繰り返し行う。
for (式1; 式2; 式3) 文
式1を評価する。
そのあとは、
「式2を評価し、それが0でない場合は 文 を実行。ついで式3を評価」
を繰り返し行う。
つまりは、
式1;
while (式2) { 文; 式3; }
とほぼ同じ意味。
なお、文とは
- 式に;を付けたもの
- { 複数の文 }
のどちらか。forもwhileも文は1つしかかけないので、複数の文を
繰り返し処理したい場合は { } で囲む。
(実際には1つであっても囲んで構わないし、ヒューマンエラーを避ける
意味ではそのほうが好ましい)
0600デフォルトの名無しさん
2007/02/21(水) 01:10:09http://pc10.2ch.net/test/read.cgi/tech/1171946674/
こっち向きだろうね。
0601デフォルトの名無しさん
2007/02/21(水) 01:11:29ありがとう!なんとなくわかったような・・・わからないような・・・
もっかい教科書見直してみるわ。
>>600
あ、そんなスレあったのか。こんどからはそっちで。
0602デフォルトの名無しさん
2007/02/21(水) 01:12:40式1;
while (式2) { 文; 式3; }
↓
式1;
while (式2) { 文 式3; } まぁ空文が1つあるかないかだけど。
あと「それが0でない場合」しか書かなかったが、0になったら
繰り返しを終えて次に進む。
0603デフォルトの名無しさん
2007/02/21(水) 20:12:39永久ループを作るときに、forなら
for(;;)文
で大丈夫だけど、whileだと
while(1)文
の様に書かないといけない。
これは1を評価するという冗長な意味を持つので、for(;;)の方がよく使われてる。
(;;) <- これが顔文字みたいでかわいいし。
0604デフォルトの名無しさん
2007/02/21(水) 21:31:32最後の2文はおまいの思いこみだw
面白いけどw
0605デフォルトの名無しさん
2007/02/21(水) 21:41:24などとは読まないから問題ない。
生成されるコードも大差ない。
MacOSX 10.4.8, gcc 4.0.1 (Intel) でやってみたら、
while (1) { puts("hello"); } / for (;;) { puts("hello"); } いずれも
「文字列のアドレスをスタックに積んでputsをcallしてループの頭にジャンプ」
という全く同じコードになった。
0606デフォルトの名無しさん
2007/02/21(水) 21:49:270607デフォルトの名無しさん
2007/02/21(水) 22:37:36grep -R 'for *(;;)' /usr/src | wc -l
2322
grep -R 'while *(1)' /usr/src | wc -l
883
だから、やっぱりfor(;;)の方が優勢と思う。
確かにwhile(1)はイデオム化してるから問題はないと思うけど、
もしも、全く最適化をしないコンパイラがあれば、少しだけ無駄なコードになるはず、、
まぁそんなことは重要じゃないので、見た目のいい方を選べばいいと思います。
0608デフォルトの名無しさん
2007/03/01(木) 19:42:26$(OBJS): $(HEADS) Makefile
行は何をしているのでしょうか?
ttp://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/template/Makefile.nsrc1bin
0609デフォルトの名無しさん
2007/03/01(木) 21:02:27スレ違い。
0610デフォルトの名無しさん
2007/03/01(木) 21:25:06make makes many problems
http://pc11.2ch.net/test/read.cgi/tech/1029599472/
あたりか?
一応答えておくと、
$(OBJS)内のファイルに依存性を追加しているだけ。
この行自体は何もコンパイルしたりしない。
「$(HEADS)のファイルいずれかかMakefileが書き換えられたら
$(OBJS)のすべてのファイルはコンパイルし直しとなる」という宣言。
0611608
2007/03/01(木) 21:52:57良くわかりましたありがとうございます
教えて頂いたスレにも書き込もうか迷ったのですが
過疎っており、都合上解答をできるだけ早めに頂きたかったので
こちらで質問させていただきました
助かりました
>>609
死ねカス
代替案出せないなら黙ってろ
0612デフォルトの名無しさん
2007/03/01(木) 22:51:450613デフォルトの名無しさん
2007/03/01(木) 22:58:01ごめんなさい
core吐きまくっててイライラしてて言い過ぎた
次は教えてもらったスレで紳士的に質問しますね
0614デフォルトの名無しさん
2007/03/02(金) 22:03:55パイプで出力を受け取ったのですが、EOFが来ません。
メインのプロセスはboost::iostream::file_descriptor_sourceで子プロセスの
出力を読み込んでいます。
どなたかお知恵を…
0615デフォルトの名無しさん
2007/03/02(金) 22:13:130616デフォルトの名無しさん
2007/03/17(土) 01:01:16下記のようなプログラムが既存のものであるんだけど、sigactionをセットした上でスレッドをぼこぼこ作り、各スレッドにシグナル待ちをさせるコードがあるんだけどシグナルハンドらの関数は処理を何もしていません。
これってどういうことを狙ってるとき、処理なしハンドラを設定してるかわからないんですが、教えてもらえませんか?
void main(void)
{
act_SIGINT.sa_handler = funcA;
act_SIGINT.sa_mask = *sigset;
act_SIGINT.sa_flags = SA_RESETHAND;
sigaction(SIGUSR1,&act_SIGINT,NULL)
for(int i=0;i<5;i++)
{
pthread_create();
}
funcB(); // 実処理
}
funcA{
// 処理なし
}
funcB{
// 何か処理
pthread_kill(スレッドID,SIGUSR1);
}
0617デフォルトの名無しさん
2007/03/17(土) 01:33:490618デフォルトの名無しさん
2007/03/18(日) 13:12:48どうやらshared objectの中にバグがあるようで、落ちる。
shared objectの中でgdbを使ってどこで落ちたのか調べたいのだから
shared objectを呼び出してるプログラムにgdbを適応してrunしてもshared objectの中まで
入ってくれない。
shared objectの中身をgdbでデバッグしたい場合はどうすればいいんでしょうか?
教えてください
0619デフォルトの名無しさん
2007/03/19(月) 00:37:58> 自作のshared object
のコンパイルオプションは???
0620デフォルトの名無しさん
2007/03/29(木) 06:38:540621デフォルトの名無しさん
2007/03/29(木) 07:40:280622デフォルトの名無しさん
2007/03/29(木) 08:40:48/procを使う
perlならProc::ProcessTable::Process
0623デフォルトの名無しさん
2007/03/29(木) 11:38:11プログラムが確保したヒープとスタックと
内部でmallocしようとしてるサイズでいいんじゃね?
まあmallocで100ギガ確保しても使わなければ
メモリは使われないからそれを消費量というかどうかは
定義しなきゃだなぁ
0624デフォルトの名無しさん
2007/03/29(木) 14:10:03管理用のデータもあるだろうし。
0625デフォルトの名無しさん
2007/03/29(木) 19:24:14getrusage(2)
0626デフォルトの名無しさん
2007/04/10(火) 21:53:49でもWindows使いたい!UNIX使いたくない!
ふしぎ!!
0627デフォルトの名無しさん
2007/04/11(水) 08:11:210628デフォルトの名無しさん
2007/04/12(木) 13:02:39FORTRAN内の配列(かなり大きい)を、Cで同じサイズで確保しようとすると、
実行時に確保できない旨のエラーが出てしまいます。
両方とも同じマシン上で動かしているので、空き領域自体はあると思うのですが、
何か良い方法はないでしょうか?
0629デフォルトの名無しさん
2007/04/12(木) 13:05:230630デフォルトの名無しさん
2007/04/12(木) 13:13:58newをつかってみたら?
0631630
2007/04/12(木) 13:14:490632デフォルトの名無しさん
2007/04/12(木) 13:17:360633デフォルトの名無しさん
2007/04/12(木) 13:23:25ソースコンバータで事は足りないの?
0634デフォルトの名無しさん
2007/04/12(木) 14:01:29それならmalloc()とかでヒープに確保しないと。
0635デフォルトの名無しさん
2007/04/12(木) 14:38:500636デフォルトの名無しさん
2007/04/12(木) 20:37:230637デフォルトの名無しさん
2007/04/13(金) 21:25:10環境変数でも貼ってくれ。
0638デフォルトの名無しさん
2007/04/17(火) 18:44:13C99を使うしかないのでしょうか?
0639デフォルトの名無しさん
2007/04/17(火) 19:17:07gccのx86_64版でsizeof(int)は4だよ。
0640デフォルトの名無しさん
2007/04/17(火) 19:24:49LP64,LLP64,ILP64あたりでググれ。
0641デフォルトの名無しさん
2007/04/18(水) 04:41:260642デフォルトの名無しさん
2007/04/18(水) 05:12:16違うこともあるお⊂二二二( ^ω^)二⊃。x86_64とか。
0643デフォルトの名無しさん
2007/04/18(水) 06:55:21そうじゃない例はいくらでもあるが。
0644質問。
2007/05/02(水) 03:01:44その標準入出力を掴むプログラムをC言語で作りました。
forkで子スレッドを作って呼び出し先プログラムを実行、
パイプでそのstdin,stdoutを呼び出し元から読み書きするまでに至ったのですが、
呼び出し先としてsshやftpを立ち上げてみると、ログインパスワード要求時の
「Password:」 の表示が標準出力じゃないみたいで、
呼び出し元プログラムを通さず、画面に出てきてしまいます。
一体何故でしょうか? またこれの解決手段は何かありますか?
0645デフォルトの名無しさん
2007/05/02(水) 03:13:030647デフォルトの名無しさん
2007/05/02(水) 04:27:16ssh などは /dev/tty にプロンプトを書いてる。
0648デフォルトの名無しさん
2007/05/02(水) 04:31:39たぶん君のやりたいことには、
ttyrecやscriptのソースが参考になる。
0649デフォルトの名無しさん
2007/05/02(水) 05:25:13> あるプログラムから別のプログラムを立ち上げて、
> その標準入出力を掴むプログラムをC言語で作りました。
そしてこの仕様に(ry
0650質問。
2007/05/02(水) 07:27:32sshの自動ログインのパスワード入力突破はみんな悩んでるみたいね。
専用の鍵を作るだとかとても面倒なことになりそうな勢い。
さて、そろそろ寝るかorz
0651デフォルトの名無しさん
2007/05/02(水) 07:31:36ssh-agent使えばいいんだから。
プログラミングですらない。
0652デフォルトの名無しさん
2007/05/02(水) 07:33:580653デフォルトの名無しさん
2007/05/02(水) 07:50:530654648=651=653
2007/05/02(水) 17:01:000655デフォルトの名無しさん
2007/05/03(木) 00:29:57→ そしてTclが嫌になる
→ Perl/Ruby/Pythonとかのexpect風モジュールに逃げる
→ 本家本元のexpectほどのエレガントさや機能がなくてガクーリ
→ でもTclの糞さにInline::Tclに逃げたりRuby+Expectとかのハイブリッドコードを書き出す
→ 他人には理解不能に
いやほんとRubyのシンタックスならTclなみにエレガントにExpectできると
思うんだけどね。ベタなコマンドライン的記法にマッチしてるから。
0656デフォルトの名無しさん
2007/05/04(金) 01:17:02マウスカーソルを横取りして駆動するドライバとか変な苦労しそう。
キーボードコントローラを乗っ取ってキー入力してみたりとか、GPUプログラミングして表示内容を取得とか。
0657デフォルトの名無しさん
2007/05/10(木) 21:52:44UNIX上で動く簡単なftpデーモンを作っています。
アクティブモードでクライアントとデータをやり取りするデータコネクションを繋ぐために、
FTPのPORTコマンドで受け取ったクライアントのIPアドレスとポート番号をsocket関数に渡して
ソケットを作り、connect関数でコネクションを繋ぎました。
ここで20番ポートを使ってデータコネクションを繋ぐように本に書いてあったのですが、
サーバー側のポート番号はどこかで指定するのでしょうか?
制御コネクションの接続の時にはbind関数で21番ポートを指定しましたが、それにあたるような
処理がconnect側にも必要なのでしょうか?
どこかで根本的な勘違いをしてるのか、調べても解答を探すことができませんでした。
お手数ですが、どなたがご助言をいただけないでしょうか?
0658デフォルトの名無しさん
2007/05/11(金) 00:03:42アクティブモードのデータコネクションは、FTPサーバからクライアントにコネクションを張りに行くわけだから
制御コネクションとは接続方向が逆って辺りは理解している?
まぁ、詳しくはネットワークスレを読めばリンクが出てくると思うけど。
0659デフォルトの名無しさん
2007/05/11(金) 01:19:450660デフォルトの名無しさん
2007/05/11(金) 06:09:45サーバー側のポート番号を指定するのはPASVの場合
0661デフォルトの名無しさん
2007/05/12(土) 00:25:23PASVとEPSVの場合は、bind-listen-acceptして待ち受けてればいい。
0662デフォルトの名無しさん
2007/05/12(土) 01:19:48その時のsrc portの話だと思われ。
>>657
制御コネクションを21番でbindしてlistenしたように、
データコネクションは20番でbindしてconnectすればいい。
bindせずにconnectすると適当なportが使われる。
0663657
2007/05/12(土) 01:27:58たくさんのご助言、ありがとうございました。
bindはacceptする側だけだと思い込んでいて、データコネクション側では20番ポートでbindしていませんでした。
さっそく、bindしてみます。
それでは失礼いたします。
0664デフォルトの名無しさん
2007/05/14(月) 21:30:04a2ps test.java
と入力したのですが、印刷されませんでした。
なぜですか?
0665デフォルトの名無しさん
2007/05/14(月) 21:47:58今時の a2ps は, 出力をかってに lpr あたりに食わしてくれるのか?
0666デフォルトの名無しさん
2007/05/15(火) 00:27:250667デフォルトの名無しさん
2007/05/27(日) 17:01:31じじぃハケーン
0668デフォルトの名無しさん
2007/06/12(火) 21:09:49コマンド tcpdump を例えば 3分ぐらいでタイムアウトさせる方法はあるでしょうか?
0669デフォルトの名無しさん
2007/06/12(火) 21:28:560670デフォルトの名無しさん
2007/06/12(火) 23:57:09do shell script "sleep 180 && killall tcpdump & tcpdump " password g_pwd with administrator privileges
まーくをーだーうぃんあぽーすくで試してみました。さすが!!!
参考提供感謝致します
本当に助かりましたm(_ _)m
0671デフォルトの名無しさん
2007/06/13(水) 01:36:26それ文法エラー。
Cと違って空文が許されてない。だから"& ;"はまずい。
&自体、;と同じくセパレータだから。
tcpdump & sleep 180; killall tcpdump
これならCtrl-Cでsleepを停めた時もkillallされる。細かいこと言えば、
tcpdump & sleep 180; kill $!
の方がいい。
0672デフォルトの名無しさん
2007/06/13(水) 10:24:56なぜか書き込み中おーえすごと固まりました。。
;(空文?) あるとかで蹴られすた。。
tcpdump を後にもっていかないと何したいの??とかで。。
タイムアウトオプション tcpdump 完了。
で、エラー処理わぁぁぁぁ・・・
本当にありがとーー
0673デフォルトの名無しさん
2007/06/14(木) 01:17:29以下の様なテキストがあります。
Code: コード1
Title: タイトル
Author: 田中 鈴木 渡辺
Code: コード2
Title: タイトル
Author: 渡辺 中山 斉藤
(以下同様に続く)
このテキストを、以下のように整形したいと思っています。
コード1 田中 鈴木 渡辺
コード2 渡辺 中山 斉藤
(以下同様に続く)
今は、grep ^Codeとawkとでコード部分を取り出してファイルへ出力、同様に
Author部分をファイルへ出力し、それらをExcelに貼り付けて整形しているのですが
さすがに良くないと思っています
「Code:」を検索して見つけたら処理、そこから「Author:」を検索して見つけたらまた処理、
改行入れてまた「Code:」を検索して…とすればよいと思ってawkのマニュアルなど読んで
みましたが、残念ですがよく分かりませんでした。
どういう風にやればよいか、教えてください。
0674デフォルトの名無しさん
2007/06/14(木) 01:35:19awk -F': ' '/Code/ { code = $2 } /Author/ { print code, $2 }'
0675デフォルトの名無しさん
2007/06/14(木) 01:43:23一旦Codeで拾った部分を変数に入れておいて、最後に出力する、というのが
ミソなのでしょうか
試してみます
ありがとうございました
0676デフォルトの名無しさん
2007/06/14(木) 01:47:480677デフォルトの名無しさん
2007/06/20(水) 22:09:480678デフォルトの名無しさん
2007/06/20(水) 22:10:350679デフォルトの名無しさん
2007/06/21(木) 17:24:180680デフォルトの名無しさん
2007/06/21(木) 19:28:300681デフォルトの名無しさん
2007/06/21(木) 19:36:470682デフォルトの名無しさん
2007/06/22(金) 01:47:070683デフォルトの名無しさん
2007/06/22(金) 07:35:000684デフォルトの名無しさん
2007/06/28(木) 20:03:140685デフォルトの名無しさん
2007/06/28(木) 21:10:590686デフォルトの名無しさん
2007/06/28(木) 21:24:03ドラッガンドドロップする
0687デフォルトの名無しさん
2007/06/28(木) 21:31:290688デフォルトの名無しさん
2007/06/28(木) 21:56:460689デフォルトの名無しさん
2007/06/28(木) 22:06:300690デフォルトの名無しさん
2007/06/28(木) 22:19:500691デフォルトの名無しさん
2007/06/28(木) 22:24:040692デフォルトの名無しさん
2007/06/28(木) 22:30:46そういえば
0693デフォルトの名無しさん
2007/06/29(金) 00:09:320694デフォルトの名無しさん
2007/06/29(金) 07:43:19安全か悩んでいます。
ファイルのパス名を引数にとるコマンドを実行したいのですが、
systemに渡す文字列を単に sprintf(cmd_line, "%s %s", cmd_path, file_path) みたいに
処理してたら、file_path の内容にスペースが含まれている場合があってバグりました。
で、クォートして sprintf(cmd_line, "%s '%s'", cmd_path, file_path) としたんですが、
あるとき file_path にシングルクオートが含まれていて、死亡しました。
0695デフォルトの名無しさん
2007/06/29(金) 08:09:37'は"'"に置き換えればいいじゃん。
>>687
ソースも何も、(マウントはできていると言う前提で)普通にファイルコピーすればいいじゃん。
0696デフォルトの名無しさん
2007/06/29(金) 10:17:52system(3)じゃないと駄目なの?
>>694の例のようにCなら、execle(3)が適切な場合も多いけれど。
system(3)じゃないと駄目なら、
shellの特殊文字を全部\でquoteだね。
;&|()<>\
0697デフォルトの名無しさん
2007/06/29(金) 15:36:160698デフォルトの名無しさん
2007/06/29(金) 16:06:280699デフォルトの名無しさん
2007/06/29(金) 17:01:430700デフォルトの名無しさん
2007/06/29(金) 18:49:412バイト目以降は 10xx xxxx というビット列なので、アレはないよ。
0701デフォルトの名無しさん
2007/06/30(土) 03:01:16わかることがその特徴の一つでしょ。
0702デフォルトの名無しさん
2007/06/30(土) 03:30:470703694
2007/06/30(土) 06:34:02>>695
でもほかにもおそらく問題のあるキャラクタがありますよね多分。
個別対応でなく包括的に処理したいのですが。
>>696
えーとexecle()を呼ぶということはまずfork()しないといけないですよね。
あと書き忘れましたsystem()でリダイレクト(>)をしている場所もあって、
そうするとdup()とかでしたっけ? 等々、ちょっと面倒かなと思ったもので。
0704デフォルトの名無しさん
2007/07/01(日) 12:36:122バイト目以降の部分は1バイト目でないこと以上のことは
わからなかったような。
0705デフォルトの名無しさん
2007/07/01(日) 20:42:34701は撤回します。
文字列を遡らなくてもマルチバイトの切れ目がわかるというのと勘違いしてた。
0706デフォルトの名無しさん
2007/07/08(日) 17:41:31long long intは使わない方がいいんですかね?
配布するような場合は、動作環境とかに
long long int が使え、それが8Byte
とかって書いておくんですかね?
0707デフォルトの名無しさん
2007/07/08(日) 18:12:520708デフォルトの名無しさん
2007/07/08(日) 18:22:44バッファオーバーフローを調べるツールはありませんか?
0709デフォルトの名無しさん
2007/07/08(日) 18:53:400710デフォルトの名無しさん
2007/07/08(日) 20:21:55mallocのようなものを実装しているライブラリありますか?
連想配列とか良く伸びるリストとかを実装するのに便利なのが
ほしいんだけど、自作するのは面倒なので
ググるためのキーワードはなんでしょう
0711デフォルトの名無しさん
2007/07/08(日) 20:23:50ちょっとステキ
0712デフォルトの名無しさん
2007/07/08(日) 20:35:370713デフォルトの名無しさん
2007/07/08(日) 20:43:550714デフォルトの名無しさん
2007/07/08(日) 22:27:430715デフォルトの名無しさん
2007/07/13(金) 17:04:41半自動的に解放するようなメモリ管理ライブラリってないですかねー?
たとえば a2 に割り付けるメモリを確保するときに、
その親は a1 だと渡しておいて、a2 のカウンタを 1 にしておく。
a1 を解放するとき、自動的に a2 のカウンタも -1 して、
結果 a2 のカウンタが 0 になるので、a2 も自動的に解放する。
みたいな。FSのハードリンクに近い考え方。
ついでにDEBUGモードでヒープ領域の配列とかにアクセスするときに、
そのライブラリの関数越しにアクセスすれば、
そのアクセスがバッファオーバーフローを起こしてないか
チェックしてくれたりとか。
あとはメモリ確保時に少し多めに確保しておいて、
そこを読み書き禁止に設定しておいて、
そこにアクセスした瞬間に割り込みが入ってプロセスが落ちるとか。
もしくは少し多めに確保するときにゼロクリアしておいて、
チェック用関数でその少し多めのところがゼロのままかチェックできたり。
0716デフォルトの名無しさん
2007/07/13(金) 17:07:54Boehm
0717715
2007/07/13(金) 17:48:52ありです。
Boehm GCでメモリリークのチェックとか出来るみたいですね。
後半のは mcheck ライブラリでできるようです。
0718デフォルトの名無しさん
2007/07/13(金) 20:25:460719デフォルトの名無しさん
2007/07/13(金) 22:12:390720デフォルトの名無しさん
2007/07/14(土) 01:53:24libumem
0721デフォルトの名無しさん
2007/07/14(土) 11:40:08ttp://www-06.ibm.com/jp/developerworks/linux/041217/j_l-memory2.html
0722デフォルトの名無しさん
2007/07/19(木) 10:38:33emacsがメインの環境に移って混乱してる
他の人がみんなunixなのでコード共有考えたらVisual Studio捨てないといけないのかな
0723デフォルトの名無しさん
2007/07/19(木) 10:41:280724デフォルトの名無しさん
2007/07/19(木) 22:42:58別に捨てなくてもいいんでない?
0725デフォルトの名無しさん
2007/07/20(金) 09:31:51みんなと相談しろよw
0726デフォルトの名無しさん
2007/08/05(日) 09:57:230727デフォルトの名無しさん
2007/08/05(日) 13:30:53SIGKILLをsignalした以外に考えられません。
0728デフォルトの名無しさん
2007/08/05(日) 18:45:50puts("signal 9のエラー");
exit(1);
0729デフォルトの名無しさん
2007/08/07(火) 23:42:3932bitのオブジェクトファイルと64bitオブジェクトファイルって
リンクする方法はありますか?というか、多分できませんよね?
常識的に考えて・・・
0730デフォルトの名無しさん
2007/08/08(水) 06:33:160731デフォルトの名無しさん
2007/08/08(水) 23:22:47互換性のために、32bit用のオブジェクトファイルにコンパイルすることもできます
0732デフォルトの名無しさん
2007/08/09(木) 08:22:54出来るのかな。
0733デフォルトの名無しさん
2007/08/09(木) 08:39:46そこからして違うのだから、普通そのままリンクできない。
0734デフォルトの名無しさん
2007/08/09(木) 10:09:25特権命令はカーネルモードでしか実行できない。
0735デフォルトの名無しさん
2007/08/21(火) 21:12:36OOM Killer
0736デフォルトの名無しさん
2007/08/22(水) 07:10:070737デフォルトの名無しさん
2007/08/28(火) 08:49:30通常agv[0]に入ってるようなやつ。
0738デフォルトの名無しさん
2007/08/28(火) 09:55:47よくやるのが$PATH内、argv[0]を検索。
つまりshellと同じことをやる。
その方法さえも、
・argv[0]は何渡されているか分からない
・絶対パス起動で、$PATHは関係ないかも。
と、うまくいかないことがある。
0739デフォルトの名無しさん
2007/08/28(火) 10:05:36posixで無理なのは知ってる。
環境依存でいいんだけど。
0740デフォルトの名無しさん
2007/08/28(火) 10:10:210741デフォルトの名無しさん
2007/08/28(火) 10:17:03無理じゃないんだけど。
もっとスマートな方法がないかと思って質問してるんだから。
所詮UNIXスレか。
0742デフォルトの名無しさん
2007/08/28(火) 10:22:350743デフォルトの名無しさん
2007/08/28(火) 10:57:140744デフォルトの名無しさん
2007/08/28(火) 11:00:120745デフォルトの名無しさん
2007/08/28(火) 11:21:38つ[popen("which")]
0746デフォルトの名無しさん
2007/08/28(火) 12:42:50/proc/PID/exe のシンボリックリンクがさしているPATHを見ればいいだろ。
このスレで訊くのが間違い。
0747デフォルトの名無しさん
2007/08/28(火) 15:22:310748デフォルトの名無しさん
2007/08/28(火) 15:30:310749デフォルトの名無しさん
2007/08/28(火) 15:47:17各種パスをコンパイル時に埋め込む方がダサい。
0750デフォルトの名無しさん
2007/08/28(火) 16:30:01そういうのが必要っていうことは行儀が悪いってことになるんじゃね?
自分をexecっていうのはたまにやりたくなるけど。
0751デフォルトの名無しさん
2007/08/28(火) 18:35:510752デフォルトの名無しさん
2007/08/28(火) 20:32:420753デフォルトの名無しさん
2007/08/28(火) 21:04:270754デフォルトの名無しさん
2007/08/28(火) 21:07:05良くあるのはスクリプト経由で起動するやつで、スクリプト内で何とかしてる。
>>746
コマンドがシンボリックリンクの場合はリンク先を指してるみたいだけど、
元質問者はそれでも良いのかな。
0755デフォルトの名無しさん
2007/08/28(火) 21:27:14Solaris も /proc/self の下にある(というか、こっちが先だよね?)。
ダサイのは >>742,749 って事で。
0756デフォルトの名無しさん
2007/08/28(火) 21:55:37>>755
必死になって方法を探さなくてもいいよ。
0757デフォルトの名無しさん
2007/08/28(火) 22:06:54探す方法は何ですかという、よくある質問に対する単純な答えだね。
そこに UNIX の慣習は関係無いし、必要だから実装するだけだよ。
俺も自分のコードに入れた事があるよ。理由は忘れたけど、その時は
それが必要だった。
0758デフォルトの名無しさん
2007/08/28(火) 22:09:300759デフォルトの名無しさん
2007/08/28(火) 23:06:210760デフォルトの名無しさん
2007/08/28(火) 23:09:550761デフォルトの名無しさん
2007/08/28(火) 23:40:510762デフォルトの名無しさん
2007/08/29(水) 00:09:21用途次第じゃそもそもパスを求めること自体に意味がないしな。
0763デフォルトの名無しさん
2007/08/29(水) 00:17:010764デフォルトの名無しさん
2007/08/29(水) 00:19:150765デフォルトの名無しさん
2007/08/29(水) 01:24:34完璧でも単純でもなければなし。
0766デフォルトの名無しさん
2007/08/29(水) 01:28:00パスはともかく、自分のファイル名は必要じゃん?
名前変えたら変身する人って結構いるよね
gzipちゃんとか
0767デフォルトの名無しさん
2007/08/29(水) 01:45:290768デフォルトの名無しさん
2007/08/29(水) 03:51:19その場合、パスにこだわる必要ありませんね。
0769デフォルトの名無しさん
2007/08/29(水) 09:10:330770デフォルトの名無しさん
2007/08/29(水) 09:57:200771デフォルトの名無しさん
2007/08/29(水) 10:08:140772デフォルトの名無しさん
2007/08/29(水) 11:01:49自分と同じところにある設定ファイルを見るとか
/etc?そんなもの見えやしねーぜ
0773デフォルトの名無しさん
2007/08/29(水) 11:15:09ちゃんとインストールするならvar やら share/miscやら。
0774デフォルトの名無しさん
2007/08/29(水) 11:31:34自分自身を書き換えたい
0775デフォルトの名無しさん
2007/08/29(水) 15:05:14-EBUSY
0776デフォルトの名無しさん
2007/08/29(水) 15:09:170777741
2007/08/30(木) 12:30:53「その方法は間違いです」っていうのはcomp.unixから来てるんだろね。
それがUPFなんかに転載されて、真実であるかのように語り継がれる。
プロセスが自分自身のパスを知りたいなんて要求はいつでも起こることだと
思うけど、UPFにそう書いてあるからやってはいけませんと。
いかにもUNIX流だなぁと思った。
ところで、この話題はcomp.unixでも何度かフレームを巻き起こした過去が
あるけど、2chってネットニュースに似てるとこあるかもね。
0778741
2007/08/30(木) 12:35:52前に書いたとおり、その方法は知ってる。
なんていうか、馬鹿ばっかりで驚きます。
0779デフォルトの名無しさん
2007/08/30(木) 12:40:20>>778
偽者まで現れたか。
0780デフォルトの名無しさん
2007/08/30(木) 12:44:02正真正銘本人だけど。
0781デフォルトの名無しさん
2007/08/30(木) 12:59:44釣りでないなら、何をしたいのか具体的にどうぞ。
0782デフォルトの名無しさん
2007/08/30(木) 16:21:330783デフォルトの名無しさん
2007/08/30(木) 16:28:07そりゃ釣りだろ。
そんな要求が起こるようなアホな状況をUNIX界隈の人間が作り出すはずがない。
どうせ去年までVB使ってましたとかいう低レベルな派遣クンだろ。
0784デフォルトの名無しさん
2007/08/30(木) 17:09:42> 前に書いたとおり、その方法は知ってる。
おまえが書いた中にはないだろ。
0785デフォルトの名無しさん
2007/08/30(木) 17:28:34他の場所にバイナリを移動して動かした場合はサポート外。
2. 実行ファイルのパスは設定ファイルにユーザが書き、アプリは
それを参照する。もちろん設定ファイルそのものの位置はconfigure 等で
ビルド時に決定され、バイナリ中にハードコードされている。
(または $HOME/.hoge )
こういうのが unix 流っぽいと思うが
0786デフォルトの名無しさん
2007/08/30(木) 17:42:32全体的な設定やら、個人の設定やら、実行時の環境変数やら、
起動時のオプションやらで上書きできるのが普通っぽい気がする。
0787デフォルトの名無しさん
2007/08/30(木) 17:52:03「実行時のオプションで実行ファイルの位置を渡すことを必須をする」
でいいってことか。
usage:
hoge absolute-path-of-hoge arg1 [arg2...]
みたいな感じ
0788デフォルトの名無しさん
2007/08/30(木) 18:24:32実行中に実行ファイルをunlinkすることさえ出来るのに。
0789デフォルトの名無しさん
2007/08/30(木) 20:54:11エラー処理ルーチンを入れれば良いだけじゃない。
0790デフォルトの名無しさん
2007/08/30(木) 21:16:380791デフォルトの名無しさん
2007/08/30(木) 21:34:470792デフォルトの名無しさん
2007/08/30(木) 21:54:510793デフォルトの名無しさん
2007/08/30(木) 22:03:54仕様書中に書いておくから問題無いよ。あと、実行中にキーボードにコーヒーをこぼした
場合の動作も未定義。他にも何か重箱の隅を突つく様な指摘があったら教えてくれ。
0794デフォルトの名無しさん
2007/08/30(木) 22:05:310795デフォルトの名無しさん
2007/08/30(木) 22:20:56自己増殖系。
0796デフォルトの名無しさん
2007/08/30(木) 22:43:060797デフォルトの名無しさん
2007/08/30(木) 23:00:010798デフォルトの名無しさん
2007/08/30(木) 23:20:410799デフォルトの名無しさん
2007/08/30(木) 23:35:460800デフォルトの名無しさん
2007/08/30(木) 23:39:31理由は?
0801デフォルトの名無しさん
2007/08/31(金) 00:16:12/usr/binにインストールできない使い捨てスクリプトはUNIX違反!
0802デフォルトの名無しさん
2007/08/31(金) 00:25:190803デフォルトの名無しさん
2007/08/31(金) 00:36:340804デフォルトの名無しさん
2007/08/31(金) 00:41:400805デフォルトの名無しさん
2007/08/31(金) 01:52:25問題があるということになる。
ワンクリックでインストールなしで使いたい用途にはUNIXは不向き。
デスクトップ用のソリューションにはならないね。
未来永劫管理者を必要とするシステムで自己の利権を守り続けるのも
一つの道。
0806デフォルトの名無しさん
2007/08/31(金) 02:43:34unixではそういう勢力があるからなあ
0807デフォルトの名無しさん
2007/08/31(金) 02:43:410808デフォルトの名無しさん
2007/08/31(金) 03:00:05fork()ってむしろ無いほうがいいと思うけど。
ってその話もう何回したことやら。
このスレの過去ログにもあるかもよ?
0809デフォルトの名無しさん
2007/08/31(金) 03:05:290810デフォルトの名無しさん
2007/08/31(金) 03:45:23いや、Windowsで使いたいなんて誰も思わないって。
せっかくWindowsはfork()使わなくていいようにできてるのに。
0811デフォルトの名無しさん
2007/08/31(金) 07:38:26使い物にならないってのが実状
0812デフォルトの名無しさん
2007/08/31(金) 08:11:01会話が噛み合ってないw
0813デフォルトの名無しさん
2007/08/31(金) 11:49:31雇用の確保のために協力してくれ。頼む。
0814デフォルトの名無しさん
2007/08/31(金) 16:28:39/usr/lib/hoge/*を読み込む/usr/bin/hogeというプログラムがあったとしよう。
当然libのパスはプログラムパスから生成するもの。
ln /usr/bin/hoge ~/bin/hoge
されたらどうなる?
意図しないところ、勝手にユーザが置き換えたファイルを読み込むことになる
かもしれない。
プログラムのパスなんていくらでもいじれるものに頼るのは、セキュリティ上
のリスクも負うことになるということ。
> ここまでの流れ的には、UNIXではインストールしないソフトウエアは
> 問題があるということになる。
> ワンクリックでインストールなしで使いたい用途にはUNIXは不向き。
まぁ、善し悪しだね。
0815デフォルトの名無しさん
2007/08/31(金) 16:46:02>意図しないところ、勝手にユーザが置き換えたファイルを読み込むことになる
>かもしれない。
これこそまさに hoge の作者が意図していることなんじゃない?
単に君がその仕様に賛成していないってだけでさ。
0816デフォルトの名無しさん
2007/08/31(金) 17:02:47できるかできないか が問題
0817デフォルトの名無しさん
2007/08/31(金) 17:17:45他所の習慣を無理やり持ち込んでも苦痛だし不恰好になるだけだろうよ。
0818デフォルトの名無しさん
2007/08/31(金) 21:32:05ポータブルじゃなくても何でも出来ればいいよ
0819デフォルトの名無しさん
2007/09/01(土) 00:33:050820デフォルトの名無しさん
2007/09/01(土) 01:14:17ポータブルなコードはUNIX違反!
0821デフォルトの名無しさん
2007/09/05(水) 21:30:25SIGALRMとSIGIOの両方にシグナルハンドラを設定してmain()本体で
while (1) {
pause()
}
としたのですが、シグナルが来てもpause()から制御が帰ってきません。
#正確に言うと一度だけ帰ってくるのだが二度目以降帰ってこない
ちなみに、SIGIOのハンドラを登録せず
SIGALRMのみなら何度でも帰ってきます。
また、SIGIOのシグナルハンドラはキーボード入力の度に呼び出されています。
pause()だけが返事をしないのです。
元々のソースコードは「Understanding Unix/Linux programming」
という本にあったサンプルプログラムなので、
Linuxでは動作すると思われるのですが、家のFreeBSD 6.1では動作しませんでした。
何か、心当たりがある方がいたら教えてください。
0822デフォルトの名無しさん
2007/09/05(水) 22:06:37シグナルをちゃんと再登録してる?
0823デフォルトの名無しさん
2007/09/05(水) 22:07:100824デフォルトの名無しさん
2007/09/06(木) 01:07:48BSD系ではシグナルの設定に古いsignal()インタフェースを使う場合、
ある種のシステムコールは割込みがあってもEINTRで中断せずに自動で再開する。
sigaction()を使えばデフォルトでは再開せず、オプションで再開も可能。
持っていればAPUEの10.5を参照するといい。
またはman 3 signalしてrestartという語を検索。
0825デフォルトの名無しさん
2007/09/08(土) 14:44:50>「Windowsエンジニアなんて世の中に腐るほど居て競争率が高い。HP-UXみたいな
>商用UNIXならば十分、高いところを目指せる」
>はホントだね。
確かに「自分のキャリアプランはこんなもんだ、自分の人生なんてこんなもんだ」という
割りきりができるのならば、その発想は利口と言えるかもしれません。ただ、エンジニアというよりも、
それって社会人として恐ろしく後ろ向きな発想ですよね。僕はそのセリフを聞いて反射的に「ヤバイな」と思いましたけど、
これが新卒さんだったり、業界歴の浅い人だったりしたら鵜呑みにするしかないですよね。
そう考えると他人事ながらゾッとする話です。これが重役面接、最終面接だったら何も言いません。
企業の要職が実は技術的なバックボーンがスカスカという話はありがちな話ですのでたいして驚きません。
ただ、そういう人がエンジニアの技術スキルの部分を判定するのは犯罪だと思う次第。
人の人生をなんだと思っているのか、という気はします。
まぁ「素人さんを相手にいかにハッタリをかませるかも、面接の重要な要素」という考え方もできますけどね。
「Windowsに比べて市場競争率の低いUNIXならば天下を取れるのか」についてですが、たぶんそんなに簡単じゃないと思いますよ。
凄いやつはどこの世界にもいて、その凄さというのは絶対的です。この絶対数は競争する仲間の数なんて関係ありません。
その「凄い奴」になる道は、果てしなく遠いという点で言えばWindowsもUNIXも変わりありません。断言します。
UNIXの世界で極めることができる人は、Windowsの世界でも極められます。
0826デフォルトの名無しさん
2007/09/08(土) 14:54:320827デフォルトの名無しさん
2007/09/08(土) 18:19:05>商用UNIXならば十分、高いところを目指せる」
>はホントだね。
すげぇ悪気の無い悪質な発言だな
0828デフォルトの名無しさん
2007/09/08(土) 20:39:34極端な例でいえば、
大縄跳びとけんだまをしながら早口言葉を言う世界選手権(賞金も賞品もナシ)があったら
ダラダラ練習するだけでも、その世界では十分高いところを目指せるだろう
でも、人生をそれ一本に賭けるのは無謀
0829デフォルトの名無しさん
2007/09/08(土) 22:28:25その人の人生にとっての道を狭めるという意味でUNIXはマイナスだよね。
真の競争に参加できなかったり使い辛いと馬鹿にされて精神をやられたり。
0830デフォルトの名無しさん
2007/09/08(土) 23:38:38どっちもどっちじゃないの。俺は脳味噌をやられるくらいなら
精神をやられた方が良いわ。
0831デフォルトの名無しさん
2007/09/08(土) 23:48:220832デフォルトの名無しさん
2007/09/08(土) 23:57:52Linuxに関わると金にならなくて精神をやられる
0833デフォルトの名無しさん
2007/09/09(日) 00:27:58というかこの類の話だと、〜しかできませんというような
「能無し」宣伝をする人が多くて驚く
0834デフォルトの名無しさん
2007/09/09(日) 01:08:24俺もそう思うんだけど、中々こだわりは捨てられないわ。
今のままで面白い仕事にありつけなくなったらマイクロソフトも考えてみる。
0835デフォルトの名無しさん
2007/09/09(日) 01:12:350836デフォルトの名無しさん
2007/09/09(日) 01:23:40>でも、人生をそれ一本に賭けるのは無謀
どのプラットフォームでも割と似た様な事してるから、
一個詳しくなっとけば大体潰しは効くよ。余程応用力に
欠ける場合は別だけど。
0837デフォルトの名無しさん
2007/09/09(日) 03:06:560838デフォルトの名無しさん
2007/09/09(日) 04:06:17逆もまたしんなり
アレとコレ組み合わせれば出来るのに連携とる手段無いのかよ
みたいな
最近はWSHなりなんなりで強引にくっつけられるから
楽しいけど
0839デフォルトの名無しさん
2007/09/09(日) 05:57:26小さいシェルのサンプルコードってどこかに無いでしょうか?
1000行くらいの物が希望なのですが。
0840デフォルトの名無しさん
2007/09/09(日) 06:29:290841デフォルトの名無しさん
2007/09/09(日) 08:11:06今でも超大型サーバ案件は、UNIXベースの方が多いから、
優秀なSI系エンジニアは、UNIXの方に集まっているはずだけどな。
失敗したら損害大きすぎてしゃれにならないし。
0842デフォルトの名無しさん
2007/09/09(日) 08:12:06「UNIXシステムコールプログラミング」
内容がちと古いが。
0843デフォルトの名無しさん
2007/09/09(日) 09:38:25main.cのIF、THEN、ELSE、FI等をみて驚いて
mac.hを見て歴史を感じた
0844デフォルトの名無しさん
2007/09/09(日) 12:51:59>>842
UNIXシステムコール・プログラミング (単行本)
マーク ロックカインド (著), 福崎 俊博 (翻訳)
のほうですね。
C言語によるUNIXシステムプログラミング入門
詳解UNIXプログラミング
ではないんですね。
0845821
2007/09/09(日) 13:05:18会社では絶対書き込めないんで……
>822
シグナルハンドラ自体はSIGIO、SIGALRMの両方とも
何度も呼び出されて実行されてる。
一応sigactionを試した時に手動再設定も試しましたが、状況は変わらず。
>824
sigactionでSA_RESTARTがある場合とない場合、
両方試したけどpause()が中断されない問題は解決せず。
そもそもpause()は単純にスリープ状態になるんであって
システムコール内ブロックとは違うんではなかろうかという気が。
色々ためしてみたんだが、
SIGIOのシグナルハンドラ内にあるgetch()をコメントアウトしてみると、
pause()から制御が帰って無限ループする。
無限ループ自体はmain()内で
while (1) {
pause();
}
ってやっていてシグナルハンドラ内でも入力がクリアされないから
正しいんだろうが、
シグナルハンドラ内でgetch()や標準入力からread()して
入力バッファをクリアすると二度目のpause()以降制御が帰らないっぽい。
訳わからん。
とりあえずシグナルは奥が深いと思った。
0846デフォルトの名無しさん
2007/09/09(日) 13:18:110847デフォルトの名無しさん
2007/09/09(日) 15:59:26>ハッド
?
0848デフォルトの名無しさん
2007/09/09(日) 16:21:360849デフォルトの名無しさん
2007/09/09(日) 16:27:140850デフォルトの名無しさん
2007/09/09(日) 19:42:18でもカナ入力だけはかんべんな。
0851デフォルトの名無しさん
2007/09/09(日) 21:13:220852デフォルトの名無しさん
2007/09/13(木) 20:51:450853デフォルトの名無しさん
2007/09/13(木) 23:43:52指定したディレクトリにある画像ファイルを、読み込みたいって言う話であれば、
opendir, readdir, stat, open, readぐらいで出来るんじゃないか?
画像かどうかわからないなら、ファイルの先頭見ればわかるんじゃない?
読んでどうするのか知らんが。
0854デフォルトの名無しさん
2007/09/14(金) 13:09:270855デフォルトの名無しさん
2007/09/24(月) 05:01:36ありますかね?
0856デフォルトの名無しさん
2007/09/24(月) 09:09:140857デフォルトの名無しさん
2007/09/24(月) 10:01:07http://pc11.2ch.net/test/read.cgi/db/1057023401/
0858デフォルトの名無しさん
2007/10/02(火) 10:05:54TCPでサーバを書いてるのですが,多量にクライアントが接続すると
サーバ側でacceptが失敗します.
短時間で接続切断を繰り返す類のものなのですが,acceptから返される
ディスクリプタをきちんとclose()してるにもかかわらず1012回前後の接続切断
の繰り返しで大体acceptが-1を返して失敗します.
closeしていても,一プロセスあたりに使えるディスクリプタの数って限界があるのでしょうか?
どうやったら失敗しないようにできるでしょうか?
0859デフォルトの名無しさん
2007/10/02(火) 11:25:00errnoを見れば何かわかるんじゃない?
0860デフォルトの名無しさん
2007/10/02(火) 13:26:57結局はcloseしてないってオチだったよね。
0861デフォルトの名無しさん
2007/10/02(火) 13:47:570862デフォルトの名無しさん
2007/10/02(火) 14:00:410863デフォルトの名無しさん
2007/10/02(火) 21:36:560864デフォルトの名無しさん
2007/10/02(火) 21:59:41あと、そのサーバが軌道中に、/proc/サーバのPID/fd をlsしてごらん。
close忘れがあるかわかる。valgrind --track-fds=yesでもいいけど。
0865デフォルトの名無しさん
2007/10/02(火) 23:38:420866デフォルトの名無しさん
2007/10/03(水) 01:26:23なにこの気違い
0867デフォルトの名無しさん
2007/10/03(水) 01:34:370868デフォルトの名無しさん
2007/10/03(水) 07:25:190869デフォルトの名無しさん
2007/10/03(水) 09:26:50どこが?
0870デフォルトの名無しさん
2007/10/03(水) 18:19:270871デフォルトの名無しさん
2007/10/06(土) 19:43:570872デフォルトの名無しさん
2007/10/08(月) 01:23:49exit(1)
exit(2)
exit(3)
exit(-1)
と引数が色々有りますけれど、
どれが正しいの?
0873デフォルトの名無しさん
2007/10/08(月) 01:25:540874デフォルトの名無しさん
2007/10/08(月) 09:32:54$ cat foo.c
#include <stdlib.h>
int main(int argc, char *argv[]) {
exit(atoi(argv[1])); // 引数チェックなしよ
}
$ gcc foo.c
$ ./a.out 13
$ echo $?
13
0875デフォルトの名無しさん
2007/10/12(金) 23:17:50単純な echo サーバーをベースに、fork()でマルチプロセスにしてみたんですが、
この子プロセス同士を通信させて、一つの子プロセスが受け取ったメッセージを、
他の子プロセスにつながってるクライアント全てにも送って、チャットサーバーみたいにしてみたいのですが、
こんな時ってどんな風に実装するものなのでしょうか?
0876デフォルトの名無しさん
2007/10/13(土) 09:20:04B. プロセス間通信を使う。
0877デフォルトの名無しさん
2007/10/13(土) 09:43:020878デフォルトの名無しさん
2007/10/14(日) 13:17:490879デフォルトの名無しさん
2007/10/15(月) 13:30:08それぞれのプロセスにソケット持たせればいいよ
0880デフォルトの名無しさん
2007/10/17(水) 00:15:38eth0からeth1のソケットバッファに
データを直接DMA経由で転送する方法
しらないですか?
0881デフォルトの名無しさん
2007/10/17(水) 02:33:55ハードウェアとOSに依存するので一般的な解は無い。
0882デフォルトの名無しさん
2007/10/17(水) 02:41:30つーかBSDだとなんかやり方あんのかよ。
0883デフォルトの名無しさん
2007/10/17(水) 08:39:200884デフォルトの名無しさん
2007/10/17(水) 10:08:49ちょっとバグがあってServerが強制終了されると,同一ポートを
bindできなくなります.
再起動すれば直るのですが,落ちるたびに再起動するのも時間がもったいないので
再起動せずにもう一度同一ポートにbindできるようにする方法は無いでしょうか?
0885デフォルトの名無しさん
2007/10/17(水) 10:17:510886デフォルトの名無しさん
2007/10/17(水) 11:15:46FAQくらい読め。
0887デフォルトの名無しさん
2007/10/17(水) 11:58:550888デフォルトの名無しさん
2007/10/17(水) 14:03:07OSの不具合か何かだと思ってたのかしらん。
0889884
2007/10/17(水) 14:07:40そりゃあんたsocketオープンしたままなんだから
closeするまではポートは使用されていることになってるでしょう、常識的に考えて...
誰が不都合でBugfixしてくださいなんていいましたか?w
0890デフォルトの名無しさん
2007/10/17(水) 14:29:180891デフォルトの名無しさん
2007/10/17(水) 14:35:08ありがとうございます.対処方法がわかりました.
>>890
噛み付く前にって...わけわかんないです.あんた国語の成績悪そうですね.
0892デフォルトの名無しさん
2007/10/17(水) 14:55:07>>889 がひどく見当違いで間違った内容だから>>890の様に言われているのです。
やたら他人を噛むのはやめて、自分の側が間違っている可能性も考えましょう。
0893887
2007/10/17(水) 18:17:520894デフォルトの名無しさん
2007/10/17(水) 19:18:21Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
0895デフォルトの名無しさん
2007/10/17(水) 19:30:58いやあのさ、俺が>>889->>891の発言に至るまでのフローを見ろよ。
俺はTCPの状態遷移を理解するのが目的ではない。
ようはTIME_WAIT状態でもbindする方法はないか?
と聞いたにもかかわらず、予想斜め上を行くようなわけのわか
らん>>888の回答が意味不明だから「わけわかんないです」と
いってるわけです。お分かりいただけましたでしょうか?
誰も自分が100%正しいなんて妄信してねーしw
0896デフォルトの名無しさん
2007/10/17(水) 19:48:47君と>>888は同類。なんにでも噛み付く既知外。
0897デフォルトの名無しさん
2007/10/17(水) 19:52:330898デフォルトの名無しさん
2007/10/17(水) 19:56:16まともな回答をしてくれた>>887でさえ君の態度に呆れてる。
その理由を考えたら?
0899デフォルトの名無しさん
2007/10/17(水) 19:59:34お前が考えろよ
>>885>>886>>887
と軒並みまともな回答が続く中
あんただけあきらかに異常だぜ?
0900デフォルトの名無しさん
2007/10/17(水) 20:06:43もとはただの些細な行き違いだろ?
周りが皆敵に見え始めたら危ないぜ?
0901デフォルトの名無しさん
2007/10/17(水) 23:24:19eth0からeth1のソケットバッファに
データを直接DMA経由で転送する方法
しらないですか?
0902デフォルトの名無しさん
2007/10/17(水) 23:32:40ドライバ書くしかない。
後マルチポストはやめろ
0903デフォルトの名無しさん
2007/10/18(木) 00:23:54俺にもその能力よこせや
0904デフォルトの名無しさん
2007/10/18(木) 13:02:040905デフォルトの名無しさん
2007/10/18(木) 17:25:34> 再起動すれば直る
> 落ちるたびに再起動するのも時間がもったいない
↓
> そりゃあんたsocketオープンしたままなんだから
> closeするまではポートは使用されていることになってるでしょう、常識的に考えて...
↓
> ようはTIME_WAIT状態でもbindする方法はないか?
> と聞いたにもかかわらず
面白い……。
>>903
こんな感じで。
0906デフォルトの名無しさん
2007/10/18(木) 18:21:19後は性格を直さないと!
0907デフォルトの名無しさん
2007/10/18(木) 20:29:44「VBで平方根を求めるのはどうしたらいいですか?」
という問いに対してまずニュートン法を説明した後
そもそもなぜこのアルゴリズムが成り立つのがと
得意げに証明し始めるようなもの.
あきらかに質問の空気を読めてないし,誰もそんなこと聞いてない.
お前部下からかなり煙たがられてるだろ?w
0908デフォルトの名無しさん
2007/10/18(木) 21:06:42B. はpipe(2)とかでやってみましょうかねえ
>>879
PF_UNIXとかでやるってことですか。
pipeとどっちでやってみるかなあ。
どっちも勉強してみます〜。
0909デフォルトの名無しさん
2007/10/18(木) 21:33:31勉強でやってることなら好きにすればいいが、そういうサーバなら、
最初からselect/poll/epoll/kqueueの類を使ってシングルプロセスシングルスレッド
で作るほうがずっと楽でパフォーマンスもいいぞ
0910デフォルトの名無しさん
2007/10/18(木) 22:43:43楽にできてなおかつパフォーマンスまでよくなるなら
そっちにしておきたいと思います
実のところ全体的に勉強不足で(今までシステムコールなんか呼んだこと無かった)
fork()とかしてみたらよさそうだな〜ぐらいの感じでした。
ありがとうございます。
0911デフォルトの名無しさん
2007/10/18(木) 22:55:17たんなるechoサーバなら、forkサーバで簡単に書けるんだが、
chatサーバとなると、forkしちゃうと子の間で連携するのにIPCが必要になるし、
それぞれの子の通信相手が複数(他の子とクライアント)になるんで、
どのみちI/Oの多重化を考えないといけなくなる。
それなら>>909の方針でやったほうがずっといいって話ね。
0912デフォルトの名無しさん
2007/10/19(金) 07:57:13なるほどー。selectあたりを勉強します。ありがとうございました〜。
0913デフォルトの名無しさん
2007/10/25(木) 21:14:07ネットで検索しても以下のようなサンプルばかりなので教えて下さい。
以下のサンプルだと、送信先ポート番号は設定できますが送信元ポート番号
はどのようにして設定するのでしょうか?
以下を実行してLANモニターするとポート2048->ポート6001となります。
ちなみにLinux-2.6.15です。
struct sockaddr_in addr;
sock = socket(AF_INET, SOCK_DGRAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(6001); //Dest port
addr.sin_addr.s_addr = inet_addr("192.168.100.1" );
sendto( sock, &data, Leng, 0, (struct sockaddr *)&addr, sizeof(addr));
0914デフォルトの名無しさん
2007/10/25(木) 21:34:340915デフォルトの名無しさん
2007/10/25(木) 21:35:390916デフォルトの名無しさん
2007/10/25(木) 21:36:26bind()
0917デフォルトの名無しさん
2007/10/25(木) 22:12:46有難う御座いました。うまく期待通りに動作しました。
0918デフォルトの名無しさん
2007/10/26(金) 08:23:590919デフォルトの名無しさん
2007/10/26(金) 09:05:490921デフォルトの名無しさん
2007/10/26(金) 09:26:160922デフォルトの名無しさん
2007/10/26(金) 22:01:430923デフォルトの名無しさん
2007/10/27(土) 00:16:57192.1.1.0/24 なんつーのが平気で使われてたな
0924デフォルトの名無しさん
2007/10/27(土) 01:58:05毟られる側だし
0925デフォルトの名無しさん
2007/10/27(土) 06:16:19だから悪徳SI業者がはびこるのか
0926デフォルトの名無しさん
2007/11/11(日) 00:02:25root権限で実行されるプログラム内で、ログインユーザ権限で行いたい処理があり、
-----------------------------------------------------
uid_t rootUID = geteuid(); //0が取れる
uid_t loginUID = getuid(); //501とかが取れる
if( seteuid( loginUID ) == 0 ){ //実効ユーザIDをログインユーザにする
ここで何かログインユーザ権限で行いたい処理
}
if( seteuid( rootUID ) != 0 ){ //実効ユーザIDをrootに戻す
printf( "error !!" );
exit(0);
}
-----------------------------------------------------
としました。
一度ログインユーザ権限にしてしまったのだから最後の seteuid( rootUID );
は失敗するのでは?と考えていたのですが、実際問題ありませんでした。
これは、起動時のeuidには戻すことが可能、正確な動作。と理解していいのでしょうか?
それともOSのバグか何かでたまたま動いているだけなのでしょうか?
0927デフォルトの名無しさん
2007/11/11(日) 13:23:42具体的には、
/usr/include/ucred.hのstruct ucredの
uid_t cr_svuid; /* saved user id */
gidも同じ。
というかお前seteuid(2)読んでないだろ。読めよ。
http://freebsd4-jman.kandk.co.jp/2/seteuid.2.html
0928デフォルトの名無しさん
2007/11/11(日) 14:52:440929デフォルトの名無しさん
2007/11/11(日) 16:21:270930デフォルトの名無しさん
2007/11/11(日) 17:13:26どっちのマニュアルにも載ってない…
ググってもコマンドラインが引っかかるばっかりでわかりません
0931デフォルトの名無しさん
2007/11/11(日) 17:38:15/usr/bin/libtool読んでくれ。-xで実行するか。
0932デフォルトの名無しさん
2007/11/11(日) 20:29:160933デフォルトの名無しさん
2007/11/11(日) 20:43:53unixなんて狭い箱庭なんだから1スレで十分なんだよ
0934デフォルトの名無しさん
2007/11/11(日) 20:47:40言われてみれば読んでませんでした
manはどうしても読むのを忘れるな・・・
ありがとうございました
0935デフォルトの名無しさん
2007/11/11(日) 20:49:400936デフォルトの名無しさん
2007/11/11(日) 21:37:15どうもmanのあの英文は避けてしまう・・・>>927のサイトは使えそうです
以後気をつけます
0937デフォルトの名無しさん
2007/11/11(日) 22:19:45freebsdのサイトでもいいよ。
http://www.jp.freebsd.org/man-jp/search.html
日本語に関しては最初の注意書を良く読んでくれ。
DarwinはまだFreeBSD4ベースのはず。(詳しい人フォロー頼む)
0938875
2007/11/11(日) 22:44:15あれからだいぶ時間かかってしまいましたがなんとか形になりました。
ありがとうございます。
いやあ、selectってすごいですねー。
0939デフォルトの名無しさん
2007/11/11(日) 23:00:030940デフォルトの名無しさん
2007/11/13(火) 21:12:551.Passwdファイルのログイン・ユーザー名の欄とホームダイレクトリのショートパスネームの部分を比較して、
ログイン・ユーザー名のほうが長ければそのラインを表示する。
2.Passwdファイルのラインが含む文字(すべてのシンボルを含む)数を各ライン毎に計算して、
含まれる文字数が素数であれば、そのラインを表示する。
コマンドプロンプトにどんなコマンドを入力すれば、これらができるでしょうか…?
わかる方いたらお教えください。
0941デフォルトの名無しさん
2007/11/13(火) 21:40:32以下を sed または gawk で実現する事が出来ますか
出来るのであればコードを見せて下さい
1. /etc/passwd のエントリの内、ユーザ名がディレクトリ名より長い物を抜き出す
2. /etc/passwd のエントリの文字数が素数である物を抜き出す
Answer:
1. # awk -F: '{if(length($1) > length($6)) print $0}' /etc/passwd | grep -v '^#'
2. # awk -F: '{if(length($0) == 1 || length($0) == 2 || length($0) == 3) print $0}' /etc/passwd | grep -v '^#'
ただし、1 は /etc/passwd のエントリの並びに依存する
2 は /etc/passwd の文字数の最大値まで素数判定を追加する必要がある
Comment:
passwd は Passwd ではなく passwd、ダイレクトリじゃなくてディレクトリ、
ショートパスネームって M$ 用語?
0942デフォルトの名無しさん
2007/11/13(火) 21:40:500943デフォルトの名無しさん
2007/11/13(火) 21:42:540944デフォルトの名無しさん
2007/11/13(火) 22:48:320945デフォルトの名無しさん
2007/11/13(火) 23:51:56たぶん/home/fooのfooの部分のことと思わ〜れ
0946デフォルトの名無しさん
2007/11/14(水) 00:04:36GET 〜.png HTTP/1.1
で
臼NG
と表示されるんだが、どうやったらデータが表示されるんだ…
0947デフォルトの名無しさん
2007/11/14(水) 00:06:200948デフォルトの名無しさん
2007/11/14(水) 00:08:290949デフォルトの名無しさん
2007/11/14(水) 00:10:25それをファイルに保存して画像ビューアで見ればいいだろ
0950デフォルトの名無しさん
2007/11/14(水) 00:14:05>>946
utf-8のターミナルですね。
0951デフォルトの名無しさん
2007/11/14(水) 00:15:090952デフォルトの名無しさん
2007/11/14(水) 00:22:35>>949
レスありがとう
見たいのは画像変換前のデータなんだ
>>950 エスパー
レスありがとう
悪い、ググッタがなんのことかさっぱりだ
0953デフォルトの名無しさん
2007/11/14(水) 00:26:25エスパー!頼むぞ!
0954デフォルトの名無しさん
2007/11/14(水) 00:27:00PNG画像データの先頭には、4バイトの識別子として臼NGが埋め込まれているんだ。
つまり、そこでGETできたものは画像データそのものってこと。
0955デフォルトの名無しさん
2007/11/14(水) 00:27:130956デフォルトの名無しさん
2007/11/14(水) 00:32:07とても分かりやすい、ありがとう。
ということはheadを除いた画像データは
『臼NG
・・・
・・・
』
となっていて ・・・ の部分が実際のデータということだろ?
その・・・(実際のデータ)が表示されないんだよ 臼NGで終わり
どういうことだ?
0957デフォルトの名無しさん
2007/11/14(水) 00:33:26それは大丈夫、ありがとう
GET /index.html HTTP/1.1
とかだと問題ないのだが…
0958デフォルトの名無しさん
2007/11/14(水) 00:36:440x00 がきてもデータ受信を終了しないようにすればいいんじゃない?
0959デフォルトの名無しさん
2007/11/14(水) 00:40:24あー、テキストとして見ているだろ。それだと、\x89PNG のマジックナンバーに続いて
\r\n\x1a\n の意図的な制御コードの後が \0 になっているから終端されてしまうよ。
0960デフォルトの名無しさん
2007/11/14(水) 00:43:51今ソース見直したんだが、
while抜ける時の条件が
if( (n = recv( s, recv_buf, BUFSIZE-1, 0)) <= 0)
なんだが、これだと0x00がきても抜けなくないか?
recvのreturnって確か受信したデータサイズだよな
0961デフォルトの名無しさん
2007/11/14(水) 00:45:450962デフォルトの名無しさん
2007/11/14(水) 00:49:34それを表示させる時に使ってるのが >>960 なんだ
while(...){
if( (n = recv( s, recv_buf, BUFSIZE-1, 0)) <= 0) 抜ける
else print recv_buf
}
みたいな感じなんだ
0963デフォルトの名無しさん
2007/11/14(水) 00:50:41ってなんだよ
0964デフォルトの名無しさん
2007/11/14(水) 00:51:38スゲー!
0965デフォルトの名無しさん
2007/11/14(水) 00:52:37printf("%s",recv_buf);
だ すまぬ
0966デフォルトの名無しさん
2007/11/14(水) 00:54:33for(int i=0;i<n;i++) printf("%02X", recv_buf[i]);
0967デフォルトの名無しさん
2007/11/14(水) 00:55:170968デフォルトの名無しさん
2007/11/14(水) 01:05:14皆ありがとう、感謝してる!!
分からないことあったらまた来ていいか?
0969デフォルトの名無しさん
2007/11/14(水) 01:14:25俺は回答を見て質問の意味が理解できた
0970デフォルトの名無しさん
2007/11/14(水) 01:18:30もっと勉強しろ
0971デフォルトの名無しさん
2007/11/14(水) 01:19:470972デフォルトの名無しさん
2007/11/14(水) 01:22:10もっと勉強しときますわ
サンクス(^^)
0973デフォルトの名無しさん
2007/11/14(水) 08:57:08エスパー、お前が透視するのはそこじゃないだろ。
それからShift_JISの端末な。
0974デフォルトの名無しさん
2007/11/19(月) 17:48:53Cで作りたいのですが
どのように実装するのでしょうか。
0975デフォルトの名無しさん
2007/11/19(月) 17:55:45ipfwやpfみたいなプログラム書けばいいよ。
ソースも公開されてるのでお手本にすれ。
0976デフォルトの名無しさん
2007/11/19(月) 18:03:000977デフォルトの名無しさん
2007/11/19(月) 18:28:360978デフォルトの名無しさん
2007/11/19(月) 21:16:25確かにリスンしないなら良いのですが、
既存のサーバーは変更しないで、
ある時間アクセス拒否したいので、外部からポートを塞ぎたい。
という感じです。
元々処理はackを返さないので、入口さえ
塞げたら良いと考えているのですが。
0979デフォルトの名無しさん
2007/11/19(月) 21:35:590980デフォルトの名無しさん
2007/11/19(月) 21:51:330981デフォルトの名無しさん
2007/11/19(月) 22:16:44常駐プロスから実行するので
組み込みたいと考えてます。
0982デフォルトの名無しさん
2007/11/20(火) 00:54:03>>975
0983デフォルトの名無しさん
2007/11/21(水) 01:09:310984デフォルトの名無しさん
2007/11/21(水) 01:17:30目
0985デフォルトの名無しさん
2007/11/21(水) 02:45:10愛
0986デフォルトの名無しさん
2007/11/21(水) 21:33:540987デフォルトの名無しさん
2007/11/21(水) 23:05:50目次だけ見れば十分だと思うので
ttp://www.oreilly.co.jp/books/4873112885/toc.html
0988940
2007/11/23(金) 07:49:53ありがとうございました。
1は、
cat /etc/passwd | rev | awk -F: '{split ($2, array, "/"); if ( length($NF) > length(array[1])) print;}' | rev
で、できました。
>>942
はい。そうです。
>>945
エスパーさん。
はい、その通りです。
レス数が950を超えています。1000を超えると書き込みができなくなります。