2017-02-18 15 views
1
int fd = socket(//arguments); 

この記述子は、IPC経由で別のプロセスに渡され、それでも有効か、それを作成したプロセスに対してローカルである可能性がありますか?ファイル記述子がプロセスのローカルかUnixのグローバルか

+0

グローバルである場合、異なるプロセスが標準ストリームに対して同じディスクリプタ番号を使用する方法を教えてください。 – Dmitri

+0

あなたはそうです、私はそれを忘れました。ばかげた質問。 –

答えて

2

はい、ファイル記述子はプロセスにとってローカルです。ただし、プロセスが子をフォークするとき、親子は同じファイル記述子テーブルを持ちます。これは、IOリダイレクションを可能にするため非常に便利です。これは非常に便利なトリックです。

5

ファイル記述子はプロセスにとってローカルです。たとえば、すべてのプロセスはファイル記述子0,1,2で標準入力、出力、およびエラーを持ちます。

It is possible to pass a file descriptor to another process over a UNIX domain socket.これが完了すると、各プロセスにファイル記述子のコピーが作成されますFD番号。しかし、これは一種の乱雑なAPIですが、めったに使用されません。

関連する問題