68user's page 掲示板

Prev< No. 3118〜3131> Next  [最新発言に戻る] [過去ログ一覧]
No. 3118 # koko 2003/02/24 (月) 20:58:35
>>3316 tomotomo
No.3317は>>3316の間違いです。
すいません。

No. 3119 # 68user 2003/02/24 (月) 21:34:23
>>3117 koko
> ファイルディスクリプタはバッファリングされないのでfflushのような事を
> しなくても二重書き込みにはならないでしょうか。
されません。低レベル入出力システムコールはバッファリングが
ないので大丈夫です。

No. 3120 # koko 2003/02/24 (月) 21:36:31
>>3119 68user
回答頂き、ありがとうございます。
安心しました。

No. 3121 # Japper 2003/02/25 (火) 20:32:23
>>3114 68user
ご回答ありがとうございました
大変助かりました

さて、findコマンドでファイルを検索をかけていますが
大きいファイル順に並べ替えるなど
そのようなことはできないでしょうか?

No. 3122 # koko 2003/02/25 (火) 22:59:54
C言語のプログラムでsystem関数でプログラムを呼び出します。
引数に存在しないプログラムを指定した場合のsystem関数の戻り値が-1になる時と256になる時があります。
256の時は、上位8ビットが1なのでシェルのexitコードが1のような気がするのですが、何も環境を変えていないのに戻り値が-1や256に変わる理由が思い浮かびません。
何度も繰り返していると-1と256が不規則に交互します。
この情報だけで何か分かりますでしょうか。
よろしくお願いします。

No. 3123 # 68user 2003/02/26 (水) 01:40:04
>>3121 Japper
> さて、findコマンドでファイルを検索をかけていますが
> 大きいファイル順に並べ替えるなど
大きいってファイルサイズのことですか?
もしそうなら find . -ls | sort +7 とか。

>>3122 koko
> system関数の戻り値が-1になる時と256になる時があります。
FreeBSD の system(3) がおっしゃるには
          The system() function returns the exit status of the shell as returned by
          waitpid(2), or -1 if an error occurred when invoking fork(2) or
          waitpid(2). A return value of 127 means the execution of the shell
          failed.
だそうです。

No. 3124 # koko 2003/02/26 (水) 09:49:46
>>3123 68user
確かに、私が調べたところでも同じ事が記述されていました。
試しに簡単なmainを作って存在しないコマンドをsystemで呼び出すとsystemの戻りは256(おそらくシェルの返すexitコード=1)だけでした。
-1は戻りませんでした。
256と-1が交互になるのは何か他の原因かもしれません。
もう少し調べてみます。
ありがとうございました。

No. 3125 # koko 2003/02/26 (水) 11:46:06
>>3124 koko
256と-1が交互になる件は解決しました。
SIGCHLDのシグナルハンドラを登録してあった為、シグナルハンドラが割り込んだ時のみsystemの戻り値が-1になっていた様です。
SIGCHLDをマスクしたところ、戻り値は256で安定しました。

No. 3126 # bebe 2003/02/26 (水) 19:00:41
find コマンドについて質問があります。
ファイル名で検索をかけたいと思うのですが、
UNIXだと英数字の大文字・小文字を区別してしまうので、例えば、
「a」で検索した場合、「A」というファイルは引っかからないかと
思います。
大文字・小文字の区別無く引っ掛けたいと思うのですが、その様な
オプション又は方法はありますか?

No. 3127 # 68user 2003/02/26 (水) 19:36:38
>>3126 bebe
最近の *BSD find や GNU find なら -iname とか -iregex とか。
そうでない find なら広めにひっかけて grep で絞りましょう。

No. 3128 # bebe 2003/02/28 (金) 13:58:18
>>3127 68user
findコマンドで引っ掛けられたらいいかと思ったのですが、
やっぱり広めに検索をかけて、grep等で絞り込むしかなさそ
ですね。
参考になりました。
有り難うございます。

No. 3129 # もも 2003/03/06 (木) 05:42:54
始めまして、いつもこちらでは陰ながら勉強させていtだいてます。
perlスクリプトのことでお教えください
ただ今企画中のスクリプトにおいて
外部コマンド実行時、そのコマンドプロセスの標準入力へ有る意味大量のデータ(文字列)を渡したいのです
しかしこの方法が全く頭に浮かばず情け無い状態であります!
PIPEやファイルシステムの基礎を知らない私にご教授下されば幸いです。

No. 3130 # 68user 2003/03/07 (金) 01:14:46
>>3129 もも
      open(OUT, "| command");
      print OUT "HOGEHOGEHOGEHOGEHOGEHOGEHOGE....";
      close(OUT);
ってことですか?

じゃなくて command の標準入力に渡しつつ、そのコマンドの
出力を受け取りたいなら IPC::Open2 などを使えばできます。
できますが、デッドロック回避などが面倒なので

      open(OUT, "| command > file");
      print OUT "HOGEHOGEHOGEHOGEHOGEHOGEHOGE....";
      close(OUT);
      open(IN, "< file");
      while (<IN>){
            ....
      }

でいーんではと思う軟弱な私。

No. 3131 # もも 2003/03/07 (金) 11:25:16
>>3139 金床
68user様なるほど理解しました前者が出来ればいいのです!
早速試してみます。ありがとうございました!

Prev< No. 3118〜3131> Next  [最新発言に戻る] [過去ログ一覧]