68user's page 掲示板

Prev< No. 421〜431> Next  [最新発言に戻る] [過去ログ一覧]
No. 421 # かんじゃ@C修行中 [E-mail] 1999/08/16 (月) 10:35
>> seg fault のメッセージが表示されてうまく実行できません。
> 現在、手元には その本もUNIX環境もないので、確かなことは
> 言えませんが、どこかで char *buf="abc" などと初期化して
> いる部分があると思います。・・・以下省略

さっそくのご教示ありがとうございます。
以上参考にさせていただき、さらに修行していきます。

No. 422 # mm 1999/08/20 (金) 22:54
文字列リテラルは、昔のCでは、結構普通に書き換えたりしてたみたいです。
unixの古いccのライブラリでも、この書き換えをやっているという話を聞いたことがあります。
(聞いたのは、一時ファイルの名前を作るライブラリ関数だったような…)
ANSI C以前は、自動変数の場合には、配列の初期化ができなかったために、
便宜的に利用してたのかもしれません。それとも、スタックに文字列を確保しても、
これを関数の呼び出し元に返すことはできないので、mallocを使う代わりに
静的領域を利用してたのかな…にしても毎回同じ領域が使用されるので、
static にすれば済むことって気も…?

いずれにしても、ROM化やコンパイラが同じ文字列リテラルを共用させるために、
ANSI C以降は、文字列リテラルの変更は未定義とされたようです。

No. 423 # 68user 1999/08/27 (金) 06:31
> いずれにしても、ROM化やコンパイラが同じ文字列リテラルを共用させるために、
に加えて、複数プロセスでデータセグメントを共有させるため、
例えば ls を並行して2個実行した場合、スタックとヒープは
2個用意されるが、データセグメントは1個しか用意されない、
と思ってるんですが、全然違うかも。
# アセンブラやってないんで、ここらへん いまいち感覚的に理解できない。

No. 424 # mm 1999/08/28 (土) 01:31
>に加えて、複数プロセスでデータセグメントを共有させるため、
DOSが長いもので、マルチプロセスのメモリ管理はよく分からないです(苦笑)。

>例えば ls を並行して2個実行した場合、スタックとヒープは
>2個用意されるが、データセグメントは1個しか用意されない、
とすると、文字列リテラルだけでなく、静的な変数まで共有される
訳ですよね。
素人考えでは、ホントにそれで良いの?と思っちゃいます…
例えば、コマンドラインオプションで設定されるフラグが
グローバル変数だったりすると(あり得ますよね)、前後のlsの
オプション指定が異なる場合に、先のlsのフラグまで影響を
受けちゃうおそれがないのかなぁ…?

No. 425 # 68user 1999/08/28 (土) 07:40
すいません、よく考えずに適当なことを言ってしまいました(^^;
では、2個のlsで共有される領域は何だろう?

No. 426 # mm 1999/08/29 (日) 03:27
>では、2個のlsで共有される領域は何だろう?
うーん、unixのメモリ管理はよく知りませんです(苦笑)

No. 427 # すず [E-mail] 1999/09/10 (金) 14:11
ここすごいですねっ!内容がすごく充実しててびっくりしました。<BR>
分からないことがあったら来てみようと思います。<BR>
ところで質問です。<BR>
○○○.zip のようなファイルはどうやって解凍すればいいのでしょうか?<BR>
gzip -d とか uncompress も試してみたけど、やっぱりだめでした。<BR>
UNIXでは解凍できないんですか?

No. 428 # 68user 1999/09/10 (金) 20:03
> ここすごいですねっ!内容がすごく充実しててびっくりしました。
ども。ついさっき更新しましたのでよろしく。
    http://X68000.startshop.co.jp/~68user/unix/history.html

> ○○○.zip のようなファイルはどうやって解凍すればいいのでしょうか?
unzip、zipなどのコマンドがあります。unzip -l hoge.zip で一覧表示。
unzip -e hoge.zipで展開です。

No. 429 # ge 1999/09/13 (月) 11:53
私もここのファン(?)ですが掲示板の投稿は初めてです。早速ですが、UNIXのコマンドについて教えて下さい。

su - username
この時のハイフンはどんな意味を持つのでしょうか?

No. 430 # 68user 1999/09/13 (月) 14:07
FreeBSD の su ならば - は -l と同じです。
    マニュアル:
        http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&man=su&dir=jpman-3.2.0%2Fman
    ソース:
        http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/su/su.c?rev=1.29.2.2
多分他のUNIXでも同じだとは思うけど、確信はありません。

No. 431 # ge 1999/09/16 (木) 14:13
ありがとうございます。
ご教示の通り、 - と -l は同じでした。

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