問題タブ [execv]
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 - execv を使用して C で独自のシェルを作成する
クラス プロジェクトの一部として、C で独自のシェルを構築しようとしています。execv を使用し、独自のパスを実装する必要があります。理解を深めるために、次の質問があります。
パスのリストはデフォルトでは空ですが、任意のサイズに拡張できます。この変数を制御するには、組み込みコマンドを実装する必要があります。
path
(引数なし) リスト内のすべてのエントリをコロンで区切って表示します (例: "/bin:/usr/bin")。
path + /some/dir
指定されたパス名をパス リストに追加します。
path - /some/dir
指定されたパス名をパス リストから削除します。
私は割り当てを読み違え、これまで execvp を使用してきました。独自のパス変数を作成する方法と、実行されたコマンドごとに、そのディレクトリを検索してパスに追加する方法を教えてください。または、私が見ることができる execv を使用して書かれた単純なシェルはありますか?
http://linuxgazette.net/111/ramankutty.htmlを見ましたが、検索が少し複雑すぎることがわかり、彼は execve を使用しています。
これまでのところ、最初は null の char *mypath 変数があります。ただし、ユーザーはパス + some/dir またはパス - /some/dir を使用して追加または削除できます。execv の構文は execv("/some/dir", argv) です。実行可能ファイルのパスを検索して execv に渡すにはどうすればよいですか?たとえば mypath=/bin/ls ; execv(mypath, argv) を渡すと機能しません...では、execv にパスを渡すにはどうすればよいですか?
c - 「uname」を execv() に渡すと「不明なコマンド」エラーが発生する
したがって、キーボードから実際にコマンドを取得し、配列に格納されているトークンに分割し、それらのトークンを「execv」(ubuntuのコマンド)への入力として使用するプログラムをCで構築する必要があります。コマンド「uname」を選択しました」をパラメータ「-a」で実行しているのに、なぜか「Comanda necunoscuta!」と言い続けます。(不明なコマンド!) 私のコードは次のとおりです。
c - 2D 配列パラメーターからの execvp の実行
char[][] 型 (別名、文字列の配列) のデータを使用して execvp を実行しようとしています。これで execvp()
、文字列へのポインターを最初のパラメーターとして受け取り、次に文字列の配列へのポインターを 2 番目のパラメーターとして受け取ることがわかりました。以下で動作させるための文字列と文字列-私が試したものはすべて互換性がないと見なされます!
どんな助けにも感謝します:)-コードを少しコンパクトにするためにヘッダーを削除しました!
c - execv() でプログラムを実行できません
私のコードは次のとおりです。
出力は次のとおりです。
しかし、何も起こりません(グラフをポップする必要があります)。
プログラムを実行したばかりの同じ場所で、「準備完了」なしで出力をコピーして端末に貼り付けています。したがって、これがパスの問題であるかどうかはわかりません。
私は何が欠けていますか?
c++ - C++ プログラムで strace の出力をキャプチャする方法
C++ プログラムで strace の出力を分析したいと考えています。アプリから起動/bin/strace ps
しているときに、ps から出力を取得しますが、strace からではなく、strace の出力が stdout (端末) に出力されます。パイプを使用してストリームをリダイレクトする標準的な手法を使用します。
ここに私の情報源があります:
プログラムで strace の出力を取得するにはどうすればよいですか?
execv - execv(parent_process) execv はいつ完了しますか?
プログラムによって execv(parent_process) が呼び出され、parent_process が fork して終了します。execv() の実行が完了するのはいつですか。child の完了後か、parent_process の完了直後か。
私のプログラムでは、parent_process の完了直後に終了します。
c - execv を使用して sudo でプログラムを実行するには?
残念ながら、この質問をする前に多くの投稿を読みましたが、私の問題に必要な解決策を提供してくれるものはありませんでした。gnu c で mpi プログラムを作成しており、前の子プロセス内で hping3 を実行しようとしています。実際のステータスは、子を生成でき、おそらく hping3 コマンドを実行できるということですが、子のパイプ出力により、hping3 からのものである可能性がある次のエラー メッセージが表示されます。
私は次のことを行いました:最初に、パラメータを埋めるために大量の文字配列を作成しました。なぜ配列?実行時にポートと IP を変更したい (反復ループ)
パラメータの変更は次のようになります。
そして最後にフォーク。
私はこの問題で立ち往生しており、現在12時間解決に取り組んでいます。