- 1 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:14:50 ]
- UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
前スレ Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/ Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/ Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/ Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/ Part1 pc2.2ch.net/tech/kako/992/992057422.html Part3のミラー makimo.to/2ch/pc5_tech/1085/1085930894.html Part2のミラー makimo.to/2ch/pc5_tech/1055/1055110889.html 関連スレ Cygwin使っている人いますか? その14 (UNIX板) pc8.2ch.net/test/read.cgi/unix/1107587275/ Cygwin使っている人いますか? 3 (Windows板) pc8.2ch.net/test/read.cgi/win/1090131123/ 関連板 pc8.2ch.net/unix/ pc8.2ch.net/linux/
- 855 名前:デフォルトの名無しさん [2005/09/07(水) 01:54:38 ]
- 詳解UNIXプログラミングって本買ったんですけど、
C言語で組むのとどう違うのか、本質が理解できません。 目の覚めるようなご教授をお願いします。 なるほどー、というようなやつで。
- 856 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:00:03 ]
- Cしたい
- 857 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:09:51 ]
- >>855
おまえには無理
- 858 名前:デフォルトの名無しさん [2005/09/07(水) 02:12:34 ]
- そういう受け答えは飽きたので、レスするのは本当の答えを知っている人だけで結構ですから。
- 859 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:15:09 ]
- 質問の意味が理解できないからそんな人はいないかと(笑)
- 860 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 02:41:17 ]
- C言語云々は ANSI C のみでという事か?
自分の居場所を説明出来ないヤツに道案内するのはしんどいからパスだな。
- 861 名前:マイク ◆yrBrqfF1Ew mailto:sage [2005/09/07(水) 02:41:37 ]
- ハードウェアは変更しづらいから
遅いけど変更しやすいソフトウェアがあるはずだが そのソフトウェアに合わせてハードを選ぶのは本末転倒だよな?
- 862 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 03:38:01 ]
- >>855
違わないと何か困るの? >>861 日本語不自由なんだね。ちゃんと勉強しないと高校行けないよ。
- 863 名前:デフォルトの名無しさん [2005/09/07(水) 03:46:25 ]
- ファイルがすでに存在するかどうかを確認するにはどのようにしたらよいのでしょうか?
- 864 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 03:50:35 ]
- 目視で確認すればいいだけじゃん
- 865 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 03:54:31 ]
- ワロタ
- 866 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:06:25 ]
- 目視は疲れるからなあ。俺なら人に訊くね。
- 867 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:16:29 ]
- プログラムからコマンド例えばlsを発行してその結果をプログラムに取り込む方法を教えてくだすれ
- 868 名前:マイク ◆yrBrqfF1Ew mailto:sage [2005/09/07(水) 04:26:50 ]
- よく知らんがパイプとか標準出力等をdupったりすんじゃないのか。
- 869 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:27:55 ]
- よくしらないのにレスするな
- 870 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:28:26 ]
- system とか popen とか
- 871 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:51:03 ]
- APUEをちゃんと嫁
- 872 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:58:20 ]
- open(2)してみれば分かる。
なければ、エラーか、新規作成かは第二引数で選ぶことができる。
- 873 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 11:46:11 ]
- >>867
よくしらんが、GUIならコピー&ペーストという手がある。
- 874 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:07:11 ]
- >>873
どんなプログラム書けばいいんですか?
- 875 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:11:53 ]
- teratermでログインすりゃログ取れるでしょ
それと同じようにすればいい
- 876 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:17:53 ]
- >>875
詳しく
- 877 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 12:38:00 ]
- 結論:>>863 に見合った方法など ない
- 878 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:12:09 ]
- >>877
いや、>>872だから。 >>867は、>>870のpopen(3)。
- 879 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:44:51 ]
- UNIXはまともなファイラーがない時点でクライアントとして終わってる
emacs使ってるキモイ奴は困らないだろうけど fdcloneの入ってない環境はクソ
- 880 名前:デフォルトの名無しさん [2005/09/07(水) 13:45:57 ]
- >>879
ワラタ
- 881 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:47:03 ]
- emacs持ち出すまでもなく、お好きなシェルでええやん(笑)
- 882 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:52:20 ]
- >>881
おまえ、タイプ量考えろよ おれはファイル選択はカーソルキー以外使いたくないの
- 883 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:57:23 ]
- UNIXは唯一telnetとかでリモート操作できるのは評価してやるが
GUIはクソ コピペもまともにできないXサーバーなんて入れるかっつーの おれはteratermで十分 けどCUIのファイラーがfdcloneしかないのはマジでクソ
- 884 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:58:47 ]
- >>883
ファイラって便利?
- 885 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 13:59:03 ]
- シェルはDOSよりずっとまともなワイルドカード使えるし
正規表現つかえるツールもいっぱいあるやん。 肌に合わないなら無理してUnix使うなよ(笑)
- 886 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:02:00 ]
- PIP.COMがないと話にならん。
今でも8インチ片単に入れて持ち歩いている。
- 887 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:03:39 ]
- 海胆糞板逝け
- 888 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 14:06:09 ]
- うむ、PIPはけっこう良かった。
- 889 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 18:42:10 ]
- >>882
指の本数足りない人は大変だね
- 890 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 21:23:50 ]
- じゃぁ俺、秀吉。
- 891 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 21:35:07 ]
- >>890
大杉。
- 892 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:18:54 ]
- vimのようにスクリーン全体を書き変えるようなプログラムの画面出力を得るにはどうしたらよいのでしょうか?
- 893 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:52:01 ]
- vram上のデータをファイルに書きだせばいい。
- 894 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 11:55:49 ]
- >>892
・画面のイメージが欲しい。 ・画面全体を文字列として取得したい。 ・vimの出力するコントロールシーケンスを取得した。 どれ?
- 895 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:17:45 ]
- >>894
二番目か三番目です。そのへんも良くわからないもので…
- 896 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:20:00 ]
- >>894
> ・画面全体を文字列として取得したい。 端末エミュレータでcut&paste > ・vimの出力するコントロールシーケンスを取得した。 script(1)
- 897 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:21:02 ]
- あれ? 自分の書いたプログラムで、
自分の書いた画面を知りたいと言うこと? curses(3)を使って画面を書けばあ?
- 898 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:24:47 ]
- >>896
おお、ありがとうございます!scriptを使ってみます。
- 899 名前:892=895=898 mailto:sage [2005/09/08(木) 12:27:09 ]
- >>893
vramって何か分かりません… >>897 自分の書いたプログラムから他のプログラムを呼びだして、その画面出力が得られないかと思ったのですが…。
- 900 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 12:30:59 ]
- >>899
scriptはそういう使い方じゃないなあ。 cursesの方が良さそう。>>687>>683
- 901 名前:892 mailto:sage [2005/09/08(木) 12:40:48 ]
- >>900
そうなんですか。。cursesで調べてみます。ありがとうございます!
- 902 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 13:13:26 ]
- >>901
騙されるなキミが調べるべきものは pty だ。
- 903 名前:デフォルトの名無しさん [2005/09/10(土) 12:28:45 ]
- あるプロセスが動いているかどうかを調べるための関数を教えてください。
- 904 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 12:31:03 ]
- ps
- 905 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 12:57:56 ]
- >>903
ttp://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC18
- 906 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 14:35:12 ]
- 困りましたねぇ。
- 907 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 14:42:55 ]
- なんだこの直訳なページは!!
- 908 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 14:51:26 ]
- >>907
>>3
- 909 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/10(土) 21:54:37 ]
- >>907
書籍じゃないんだから訳が気に入らないなら自分も訳せば?
- 910 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/10(土) 22:45:09 ]
- メモリが'read'になることはできませんでした。
- 911 名前:名無しさん [2005/09/11(日) 08:40:39 ]
- >>892
vim abc.txt |tee vim.log でどう?
- 912 名前:911 [2005/09/11(日) 09:01:00 ]
- あるいは、vim のコマンドを使って適当な行を切り出す。
vim -c ":1,25w! onepage.txt" orig.txt
- 913 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/11(日) 19:05:01 ]
- オクトデュアル ってなんでしょうか
- 914 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/11(日) 19:10:03 ]
- ググったらすごかった
- 915 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 09:54:37 ]
- Emacsやviより統合開発環境を使った方がわかり易くないでしょうか?
- 916 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 09:58:27 ]
- Σ(´д`) えっ このすれは大学生、院生、趣味人 しかいないって本当ですか?
- 917 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 10:15:59 ]
- 本当です
- 918 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 14:10:34 ]
- 趣味人ってのが範囲広すぎるな。。。
(一応)社会人の俺もあてはまってしまうではないか。
- 919 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 14:18:35 ]
- 社会人に(一応)と付ける意味がわからん。
NEETってこと?
- 920 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 15:04:12 ]
- >>913-
スレ違い
- 921 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 15:36:29 ]
- >>1-
板違い
- 922 名前:名無しさん [2005/09/16(金) 19:59:21 ]
- Advanced Programming in the Unix Environment
だけど、 amazon.com から直接買うのと amazon.co.jp から買うのとどっちが安い?
- 923 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 20:21:59 ]
- しらべりゃば?
- 924 名前:名無しさん [2005/09/16(金) 20:52:18 ]
- 調べた。
amazon.com(古本) + 送料9.79ドル + 日本の消費税 = 7848円 (3週間以上かかる?) amazon.co.jp(新本) + 送料無料 + (税込み) = 8734円 (数日)
- 925 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 08:41:08 ]
- ついでに買いたい洋書の1冊や2冊ないのか?
- 926 名前:名無しさん [2005/09/17(土) 13:26:08 ]
- 古本混ぜると1パックにまとまらんのよ
- 927 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 13:46:49 ]
- 自分なら値段が少し高くついても、面倒くさくないほうを選ぶ。
- 928 名前:デフォルトの名無しさん [2005/09/17(土) 18:00:49 ]
- おまいら、MINIXやったか?
- 929 名前:デフォルトの名無しさん [2005/09/17(土) 18:03:52 ]
- けっ、
- 930 名前:名無しさん [2005/09/17(土) 20:19:39 ]
- Advanced Programming in the Unix Environment
第1版 著者Stevens(1999年に死去) 邦訳 『詳解UNIXプログラミング』 第2版 Pagoによる改定版(2005年) (いずれ第2版の邦訳も出るだろう) Linuxについての記述を読んでみたいので買うか。
- 931 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 23:59:20 ]
- カーネルの勉強したいけど、どのへんがおすすめ?
www.amazon.co.jp/exec/obidos/ASIN/0132017997/ www.amazon.co.jp/exec/obidos/ASIN/0596005652/ www.amazon.co.jp/exec/obidos/ASIN/0130313580/ www.amazon.co.jp/exec/obidos/ASIN/0136386776/
- 932 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 08:01:52 ]
- FreeBSDじゃダメかね? OS問わないなら、一番読みやすいと思うが。
www.mckusick.com/FreeBSDbook.html 具体的なんじゃなくて、概論だったらこっちがお勧め。 www.amazon.com/exec/obidos/tg/detail/-/0201741962/ タンネンバウムはMINIX(とamoeba)で有名になったけれど、著作は激しくイマイチ。
- 933 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 12:16:16 ]
- 今更FreeBSDのkernelなんか勉強して意味あるのか
LinuxかOpenSolarisだろ
- 934 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 12:50:49 ]
- Solarisだと、↓だな。
Solarisインターナル www.amazon.co.jp/exec/obidos/ASIN/4894714582/
- 935 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 12:52:00 ]
- >>933
基本的な技法はそれほど変わらないよ。 >>931のような人なら。 Linuxはいい本あるかね? 構造がころころ変わるしなあ。
- 936 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 15:34:39 ]
- kernel 2.4以前と2.6以降の違いって言えるか?
おれは、無理。
- 937 名前:名無しさん [2005/09/18(日) 21:25:27 ]
- つ www-6.ibm.com/jp/developerworks/linux/031121/j_l-inside.html
- 938 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 21:28:20 ]
- ↑ブラクラ
- 939 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 23:36:06 ]
- さすがにdeveloperWorksをブラクラって言っても誰も引っかからないと思う
- 940 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 11:43:21 ]
- おれはURLだけ張って澄まし顔の奴が許せない
- 941 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 13:04:58 ]
- なぐっていいよ
- 942 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 14:03:15 ]
- 仕事上Linuxカーネルの仕様変更は0.0.0.1単位で把握してるけど
こういうのって御当地カップラーメンのバージョンいくつ覚えてるか とかいうのと大差無いどうでもいい知識なんだよな。面白いけど。
- 943 名前:デフォルトの名無しさん [2005/09/19(月) 15:19:54 ]
- ログファイルの再オープン(?)について質問です。
openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2); のようにオープンして出力しているログファイルを、SIGHUP受信時に 再オープンしたいのですが、 signal(SIGHUP,sighup_handler); ... void sighup_handler(int signal) { closelog(); openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2); } では、処理以降にログが記録されなくなってしまいました。 GoogleやKodersなどで調べてみてもこれというものが見つからなかったのですが 正しい処理の書き方はどのようにすればいいのでしょうか?
- 944 名前:943 mailto:sage [2005/09/19(月) 15:26:41 ]
- 補足です。
最終的にログローテートを正常に行いたいわけですが、/etc/syslog.conf に local2.*/var/log/test.log とした上で、/etc/logrotate.d/syslog に /var/log/test.log { postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } と書いたのですが、ローテート後のログファイルには何も出力されませんでした。 それでプログラム側でもSIGHUPで何かしないとだめなのかと思ったのですが。。。
- 945 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 15:48:34 ]
- >>943
やり方はだいたいOKだから closelogとopenlogを疑うしかないな openlog内のファイルの開き方が特に心配だ
- 946 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 16:00:27 ]
- 経験的にはcloselog呼ばずにもう1回openlog()呼べば上手く行くことが多い
- 947 名前:943 mailto:sage [2005/09/19(月) 16:02:03 ]
- ありがとうございます。
openlog()で開いてsyslog()で出力しているだけなので、openlog()の処理が 実際どのように行われているか分かりません…。渡している引数がおかしかったり するのでしょうか? それと環境を書いていませんでした。RedHat9(gcc3.2.2, glibc2.3.2)です。 単純なサーバプログラムの練習で書いています。
- 948 名前:943 mailto:sage [2005/09/19(月) 16:24:38 ]
- >>946
ありがとうございます。 試してみましたが、ファイル名を変更しても以前のログファイルにそのまま 追記されてしまいました。 根本的な質問で恐縮ですが、syslogにログを出力する場合にログローテートに 必要なこととは何なのでしょうか? ・アプリケーション側でHUPシグナル受信時などにログファイルを再オープン ・syslogdを再起動 ↑上記は二つとも必要でしょうか?
- 949 名前:943 mailto:sage [2005/09/19(月) 16:26:42 ]
- すみません。>>943のopenlog()の部分ですが手写しだったので
間違っていました。訂正いたします。 誤: openlog("test", LOG_NDELAY|LOG_PID, 0, LOG_LOCAL2); 正: openlog("test", LOG_NDELAY|LOG_PID, LOG_LOCAL2);
- 950 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 16:51:07 ]
- 書かれるログはsyslogが握ってるんだから出力するデーモン側では
何もする必要ないだろ。 syslogdが腐ってるんじゃないの? それになんでわざわざkillのエラー出力を捨ててるのさ。
- 951 名前:943 mailto:sage [2005/09/19(月) 18:00:21 ]
- ありがとうございます。
syslogに出力している場合、syslogdを再起動(またはHUP)するだけで 良いということですね。ローテート後にログが出力されなくなるのは別の 原因かもしれませんので、もう少し調べてみます。 killのエラー出力を捨てているのは、/etc/logrotate.d/syslog の他の デフォルト記述がそうなっていたので流用していました。
- 952 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:06:38 ]
- 別にsyslogdの動作が標準で決まっているわけじゃないので、
SIGHUP送ればどうとかそんなことは環境依存。少なくとも最近の OSに同梱のsyslogdなら、ローテートするためのコマンドが一緒に ついてくるか、ローテートする方法がマニュアルに書いてある はずだが。 どっちも無いとしたらそのロクでもない環境を恨め。
- 953 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:14:01 ]
- syslog(3)はsyslogdにログを送る関数で、
ログローテイトはsyslogd側の仕事。 殆んどの場合、SIGHUPでsyslogdがログファイルをreopenする。 ただし、新しいファイルはtouch(1)などで作成してやる必要があることが多い。 >>945>>946は、かなり無知だから、知らないことは黙っているように。
- 954 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:37:40 ]
- SIGPIPEってシグナルハンドラで捉えることができないのでしょう
か? 下のプログラムを実行してもシグナルハンドラが呼ばれず、一瞬で 終了してしまいます。linuxとsolarisでテストしてみました。 #include <stdio.h> #include <unistd.h> #include <signal.h> void f(int a) { printf("sigpipe\n"); } int main(int argc, char **argv) { int fds[2]; pipe(fds); close(fds[0]); write(fds[1], "hoge", 4); signal(SIGPIPE, f); sleep(100); return 0; }
- 955 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 18:44:24 ]
- >>953
syslogがsyslogdにログを送る関数なんて決まってないんだが LinuxとBSDしか触ってないとこういう人間になるんだろうか
|

|