2017-10-29 4 views
0

chmod 777 script.plは、端末でスクリプトを実行するときに使用されます。 しかし、私たちがcプログラムを実行するときにchmod pg.cを使用しない理由なぜPerlスクリプトの実行中にchmodを使って実行権限を与える必要がありますが、cプログラムの実行中にそのようなことは行われませんか?

+0

Cプログラムにはすでに実行権限がありますか? –

+2

私たちは 'pg.c'プログラムを実行するのではなく、そのコンパイルされたバージョンを実行するので、 'a.out'。そして、 'a.out'(通常)_does_に' x'フラグがセットされています。 – PerlDuck

+1

777を使用しないでください - コンピュータ上のすべてのユーザーアカウントにスクリプトへの書き込みアクセス権が与えられます。もっと慎重な選択が755になるでしょう。 –

答えて

3

通常、Cプログラムは直接実行されず実行ファイルにコンパイルされます。コンパイラは、そのファイルを直接実行できるようにそのファイルに対するアクセス権を設定します。

明示的にインタープリタを呼び出すときにスクリプトを実行するために、実行可能フラグは不要であることに注意してください。 perl script.plを実行すると、常に動作します。gcc pg.cは常に動作します。実行可能フラグは、スクリプトが明示的なインタプリタなしで実行される場合にのみ必要です。つまり、./script.plです。オペレーティングシステムは、ファイル自体から正しいインタープリターを決定します(例えば、#!/usr/bin/perl行から)。

0

cプログラムをコンパイルすると、すでに実行可能なバイナリが使用できます。しかし、Perlがインタプリタ言語である場合、最初にコンパイルする必要はなく、直接実行することができます。 + xの許可が必要なためです。

関連する問題