ずっと前に、私はロンドンの完全に奇妙な会社に就職の面接に行きました。彼は専門家のUnixコンサルタントであると主張しました。とにかく、これらの人々は完全に無口であり、当然のことながら、会社はもうそこにいないようですが、インタビューで彼らは私に次の質問をしました:
新しいプロセスを開始するために最初に行う電話は何ですか?
だから私は最初の呼び出しはfork
であると答えました。私にインタビューした二人は言った(私がまったく明白な何かを見逃したかのように、非常にしつこく)
あなたはどのような呼びかけをしますか前あなたはフォークをしますか?
さて、私はこの質問について何も知りません、そして私はこれらの人々がこの質問とは全く関係のない理由で彼らが軽減されていない馬鹿であると私に確信させたと言わなければなりません、しかし何らかの理由でこの質問は今でも私を悩ませています。フォークの前に行われる呼び出しはありますか?私が見逃した微妙な点はありますか?
推測することしかできないので、これを答えとして置くことを躊躇しますが、:
いずれにせよ、あいまいな事実の質問をすることは、おそらく彼らが愚かな質問にどのように答えるかを除いて、候補者について何も導き出す方法ではありません。
私の推測では、親プロセスが子プロセスの標準入力または標準出力を制御できるようにする方法を提供するために、「パイプ」を呼び出す必要があることを意味します。これは、「フォーク」の前に発生する最も一般的な呼び出しです。
私は同意します、それは悪い質問です。パイプラインなどの一部としてプロセスを作成していると彼らが指定していたとしたら、それは良い質問です。操作の順序を知ることは重要です-「フォーク」の前にパイプを作成し、各プロセスで反対側の未使用の端を閉じ、「dup2」を使用して子の記述子を適切な場所に配置し、いくつかの「exec」を呼び出します'子の機能、障害の処理など。
(専門家が推測しているという事実は、それが悪い質問であることを証明しています。)
私の推測では
execve
(これは、別のプログラムを生成する残りの半分です)、答えfork
を期待していましたが、実際にはそうではありませんでした全体を理解し、2つを混乱させました。