私はGNU Linuxの初心者です。Cプログラムを使ってプログラムに引数を与える
ちょうど起動時に自分のコードでinitプログラムを置き換えようとしていますが、私はプログラムの最後に元のinitを呼び出しています。
しかしここに問題があります:私はここでパラメータを与えることができません。プログラムでinitをsystem("/sbin/init")
と呼びました。どのようにパラメータを与えることができますか?このよう
私はGNU Linuxの初心者です。Cプログラムを使ってプログラムに引数を与える
ちょうど起動時に自分のコードでinitプログラムを置き換えようとしていますが、私はプログラムの最後に元のinitを呼び出しています。
しかしここに問題があります:私はここでパラメータを与えることができません。プログラムでinitをsystem("/sbin/init")
と呼びました。どのようにパラメータを与えることができますか?このよう
初心者なら、はシステムのルートブートプロセスを置き換えます。?それはやっているのはかなり危険なことのように聞こえる。ライフル、または何かを扱うの最初の週apple shotをやっているようなビット。
あなたのアプローチが適切であると仮定すると、希望する引数を含むように文字列をフォーマットし、その文字列をsystem()
に渡す必要があります。文字列を簡単に作成する方法については、snprintF()
をご覧ください。
あなたの返事をありがとう。カーネルにもっと近づきたいと思っているだけなので、私はinitを使って作業しています。私のプログラムは以下の通りです。int main() { \tシステム( "/ sbin/clear.sh"); //画面をクリアする簡単なシェルスクリプト \tシステム( "/ sbin/name"); //私の前に実行したいプログラム \tシステム( "/ sbin/sleep.sh"); \tシステム( "/ sbin/clear.sh"); \tシステム( "/ sbin/init 2"); //引数2のinitへの私の呼び出し } – Stealth
:
system("/bin/echo wibble wobble");
しかし、あなたはほぼ確実にそれを行うにはしたくありません。試してもシステムがそれ以上起動しないときは、次回はinittabを編集して、initがあなたのプログラムを実行するようにします。
あなたの返事をありがとう。私は印刷に関心がありませんが、それを実行します。システム( "/ sbin/init 1")を書くと、initはパラメータ1で実行されます。 – Stealth
システム(3)はサブルーチンを呼び出すのと似ているので、fork()
を使用して子プロセスを作成し、次にexecvp()
を呼び出す必要があります。
あなたは多分とにかく... `init`が上で動作する最初のものであってはならない置き換えて、「GNU Linuxの初心者で」なら、あなたはおそらく` system`たくないPipe, Fork, Exec and Related Topics
を参照してください。 、むしろ 'exec'のバージョンです。 –
あなたはコードを少なくとも簡単に投稿するべきです。 – Randy
duplicate:http://stackoverflow.com/questions/5771717/passing-parameters-to-system-calls –