2009-05-16 10 views
7

私はそのマニュアルページを読んできましたが、それがどのように機能するかを理解するのに成功していません。 system()を呼び出すときに、新しい子プロセスがforkされ、シェルバイナリがexec()されていますか?しかし、それは愚かな推測かもしれません。system()はどのようにlinuxで正確に動作しますか?

答えて

10

はい、system()は基本的には渡されたコマンド文字列のfork()とexec() "sh -c"です。 glibcから最近フォークされたexamplelibcの実装例はhereです。

+0

ありがとう、そのリンクは本当に役に立ちました:) – user108127

1

はい、system( "foo bar")はexecv( "/ bin/sh"、["sh"、 "-c"、 "foo bar"])と同等です。

+1

Posixでは、system()がSIGINTとSIGQUITを無視し、SIGCHLDをブロックする必要があります。 –

+0

はい。 Lanceが指摘している実装例ではそうしています。 – user108127

関連する問題