問題タブ [execve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - system() と execve() の違いは何ですか
私はLinuxとcを使用しています。
まず、bin/zsh を sh にソフトリンクします
次に、ルートとしてログインし、次のプログラムを実行します。
3 番目に、通常のユーザー (root ではない)としてログインします。これで、このプログラムの実行ファイルを使用して、書き込み権限のないファイルを削除または書き換えることができます。
このような:
これで、ファイル「テキスト」に「正しくない」と書き込むことができます。このファイルの読み取り権限しかありません
これらのファイルの読み取りおよび書き込み権限。
4 番目に、q を 1 に変更します。つまり、今回は代わりに execve を使用します。
そして、上記と同じことを行います。しかし、今回はファイルの内容を変更できません。
なんで?インターネットでグーグル検索しましたが、システムと実行の違いがわかりません。
linux - nasm での execvp の使用
私は今NASMを学んでいます.Linuxシステムコールはおそらく. プロセスをコピーして Linux ユーティリティを呼び出そうとしていますが、execvp にも同じ問題があり、引数を渡す方法がわかりません。どうすればこれを正しく行うことができますか?
c - ランダムな順序でファイルを実行するプロセス コントローラ
ファイルから読み取ったプロセスの独自のリストを実行およびスケジュールしようとしています。ファイルはランダムな順序で実行されており、なぜこれが起こっているのか興味があります. 最初、2 番目などのファイルに単純な print ステートメントがあり、どちらが実行されているかを示しており、それらは常に異なる (一見ランダムな) 順序で印刷されます。これまでのところ、機能が台無しになっているわけではありません。なぜそうなのか興味があります。
以下のmain.c
以下の readPrograms.c
以下のfiles.txt
linux - execve はどのように動的リンカー/ローダーを呼び出すのですか (ld-linux.so.2)
gcc を使用して、最も基本的な C プログラムである test.c をコンパイルおよびリンクしました。
予想どおり、出力は動的にリンクされた実行可能ファイルです。
strace を実行すると、次の出力が得られます。
execve マニュアルによると、strace 出力のどこかに「/lib64/ld-linux.so.2」が表示されることを期待していました。
実行可能ファイルが動的にリンクされた ELF 実行可能ファイルの場合、PT_INTERP セグメントで指定されたインタープリターを使用して、必要な共有ライブラリがロードされます。このインタプリタは、通常、glibc 2 にリンクされたバイナリの場合、/lib/ld-linux.so.2 です。
私の推測では、リンカー/ローダー (/lib64/ld-linux.so.2) 呼び出しは execve の一部です。誰か確認できますか?
c - execve 呼び出しの出力をログに記録するにはどうすればよいですか?
この簡単なプログラムを書きました。以下で開いているように、出力をtest.logに記録したいと思います。これを行うことは可能ですか?