[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 09:49 / Filesize : 207 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

UNIXプログラミング質問すれ Part6



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/

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しか触ってないとこういう人間になるんだろうか

956 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 19:00:45 ]
>>953
ちょっと誤解を招きそうな書き方じゃないか?
syslogdはHUPを受けてクチをパクパクするだけで
ログローテート自体はnewsyslog(ないし類似品)の仕事。

どのみちsyslogを吐くプログラムの知ったことではないんだが。

>>954
KILLとSTOP以外は捕捉できる筈だが。他のttyでkillを使ってSIGPIPEを
送ってみたか?
言っておくが、writeより後に設定したシグナルハンドラが時空を遡って
機能するなんてことはないぞ普通。

>>955
質問からsyslogdが存在するシステムなのは明らかなんだから別に構わないだろ。
この質問でimplementation-defined logging facilityがsyslogd以外であることを
想定する奴はいないだろ。


957 名前:954 mailto:sage [2005/09/19(月) 19:47:06 ]
>>956
すいません。あほでした。writeを後にしたらシグナルハンドラが
呼ばれました。

958 名前:デフォルトの名無しさん mailto:sage [2005/09/19(月) 19:53:54 ]
>>954
$ cat tt.c
#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void f(int a)
{
fprintf(stderr, "sigpipe\n");
fflush(stderr);
}

int main(int argc, char **argv)
{
signal(SIGPIPE, f);
for (;;) {
printf("This is a test\n");
fflush(stdout);
}
return 0;
}
$ ./a.out | echo
sigpipe
sigpipe
sigpipe

959 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 17:39:45 ]
fork、ドキュメント呼んでも全然わかりません
小さいプログラムのソースと挙動から都合のいい解釈してます
でダメだししてほしいんですけども

intforked = -1;
int main() {
fork();
}

int fork() {
if (forked == -1)
forked = 0;
return (forked = main());
} else {
return (forked);
}
}

この自作forkはforkっぽいですか?全然話になりません?

960 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 17:44:22 ]
>>959
なにがやりたいの?




961 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:11:49 ]
>>959
pthreadあたりと混同してるね

962 名前:デフォルトの名無しさん mailto:sage [2005/09/20(火) 18:16:53 ]
自前で fork できたら大変w






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<207KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef