問題タブ [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.

0 投票する
1 に答える
17562 参照

c - execve で新しいパスを使用して ls コマンドを実行する

execve を使用して ls コマンドを実行しようとしています。現在、次の引数で実行しています。

これが行うことを期待していたのは、新しい env_args を使用して ls コマンドを実行することでした。これは、PATH で ls を検索することを意味します。ただし、このコードは実際には何も実行せず、コードを実行すると出力なしでコマンド プロンプトに戻るだけです。

同じ args[] を使用して、私は execvp を使用していましたが、ls が機能し、現在のパスを検索しました。

私が間違っていることを教えてもらえますか?

私がやろうとしているのは、独自の環境を作成してエクスポートし、char** で定義した環境を exec に使用させることができる独自のシェル プログラムを作成することです。基本的に、env_args を操作して変数を追加および削除する独自の関数を作成しています。exec を呼び出すときに、{"ls", "-l", NULL} で exec を呼び出して新しい環境を調べられるようにしたいと考えています。 ls という有効なプログラムのパス変数。これで私がやっていることが少し良くなることを願っています。この場合、 extern 環境変数が機能するとは思いません。

0 投票する
3 に答える
78482 参照

c - execveの要件を理解し、環境変数を設定する

私たちは先生の解釈に多くの問題を抱えています。私たちは説明を求め、彼から次のことを返しました

  1. execveの場合は、エクスポートされた変数を使用してセットアップした環境を送信し、組み込みコマンドを作成して/ bin / bashのサブシェルを生成します。これにより、envを使用してエクスポートされた変数を確認できます。

    (彼はここで独自の環境変数を作成することについて話しています。)

  2. はい、自分で作成します。シェルの起動時にenvironをコピーして、エクスポートされた変数のみを追加することから始めることができます

これは、私によるStack Overflowに関する次の投稿に関連しています(この他の投稿を読むと、私がやろうとしていることを理解するのに役立ちます):

execveで新しいパスを使用してlsコマンドを実行する

私たちはこれについて非常に混乱しています。もう一度、私たちが今やろうとしていることを説明します。Linuxシェルがこれを行う方法と同様に、PATHやUSERなどの環境変数や、ユーザーが定義したいその他の変数を設定できる独自のプログラムを作成する必要があります。

これをどのように呼び出すかの例は、(プログラム内のプロンプトで)次のようになります。

これにより、「dog=spike」のような環境変数が作成されます。

execさらに重要なのは、独自のPATH変数を設定し、それをコマンドに送信できる必要があることです。これは紛らわしい部分です。なぜなら、私たちのすべての質問に基づいて、私たちが何をすべきかを理解していないからです。

0 投票する
1 に答える
3689 参照

c - C、execve、およびパラメーターの UNIX 単純シェル

コードの基本的な考え方は、ユーザーによる入力コマンドを読み取ることですread_command()(関数で実行されます) (例: ls -l)。次に、入力文字列を小さな文字列に分割し、それらを配列に格納します。ポイントは、コマンドをパラメーター [0] (例: ls) に格納し、パラメーターをパラメーター [1,2,3 etc.] (例: -l) に格納することです。execve()ただし、関数を正しく実行していないと思います。

0 投票する
1 に答える
2952 参照

c - パス検索で実行しますか?

コードからプログラムを実行し、環境変数と引数を提供したいと考えています。AFAICT、execve正しい選択です。

ただし、ではなく引数execveを受け取ります。つまり、最初の引数が実行可能ファイルへのパスであることが期待されます。pathfilename

自分自身を解析$PATHしてパスを見つけることができることはわかっていますが、本当に他に選択肢はありませんか? 私が使用するためにどこかに実装した人は他にいませんか?

0 投票する
1 に答える
622 参照

iphone - setuid iPhone アプリで MobileSubstrate をロードする

iPod touch (Installer4) に root アプリがあり、MobileSubstrate をロードして、バグを修正するための微調整を開始できるようにしたいと考えています。ルートアプリには、アプリがクラッシュすることなく6755のアクセス許可を設定できる中間実行可能ファイルがあることを知っています。インストーラーの場合、Scytheという名前です。execve() で MobileSubatrate をロードする新しいものを作成しようとしましたが、成功しませんでした。アプリはクラッシュせず、ルートのままですが、MobileSubatrate はロードされません :/ (Activator が機能しないため、これはわかっています)。

これが私の Scythe.c です (Icy の Trichlorotrifluoroethanol.c に基づく) :

ご覧のとおり、execve() で dylib をロードする方法を調べたところ、LD_PRELOAD と LD_LIBRARY_PATH が見つかりましたが、どちらも機能していません。そして、dlopen("/Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY) を実行するためのインストーラーのソース コードを持っていません。

誰かが問題を解決してくれることを願っています。

0 投票する
2 に答える
3747 参照

bash - execve()を使用したUNIXの「sh-c」が追加の引数を受け入れない場合の問題

sh -c 使い方やbash -cきちんと調べようとしています。

"sh -c ls"引数なしのような簡単なコマンドを簡単に実行でき ます。

問題は、引数を追加しようとしたときに発生します。するためにls -ltga、私はしなければなりませんでした:

これは大きな問題ではありませんが、自分で小さなシェルプログラムを作成しようとしている場合を除き、次のことexecveを試してみます。

そしてそれは私にエラーを与え、次を見つける前にそれがEOFに達したと言っています'"'

私も試しました:

名前の付いたファイル/スクリプトが見つからないと言って私に戻ってきました"ls -ltga"

誰かが私が間違っていることを知っていますか?

0 投票する
3 に答える
13074 参照

c - execve() が C でプログラムを起動できない

Linux でexecve()fromを使用して新しいプロセスを生成しようとしています。unistd.h次のパラメーターを渡そうとしましたexecve("/bin/ls", "/bin/ls", NULL);が、結果が得られません。エラーも発生せず、プログラムは終了します。これが起こっている理由はありますか?rootおよび通常のユーザーとして起動してみました。私が使用する必要がある理由execve()は、アセンブリ呼び出しで動作させようとしているからです。

ありがとうございました!

0 投票する
3 に答える
10657 参照

c - execve( "/ bin / sh"、0、0); パイプで

私は次のサンプルプログラムを持っています:

私とパイプなしで実行すると、正常に動作し、shpromtを返します。

しかし、これはパイプでは機能しません。その理由はわかっていると思いますが、解決策を見つけることはできません。以下の実行例。

これは、EOFを受信し、エラーメッセージなしですぐに終了するような方法でgets空になるという事実と関係があると思います。stdin/bin/sh

getsしかし、パイプを介して入力を供給してもpromtを取得できるように、(可能であればプログラムを変更せずに、そうでない場合は削除せずに)これを回避するにはどうすればよいですか?

PS私はこれをFreeBSD(4.8)マシンDSで実行しています

0 投票する
2 に答える
5560 参照

c++ - SIGKILL によって強制終了されたプロセス

プログラムを実行した直後に強制終了されるプロセスがあります。これはコンパイルされた実行可能ファイルのコードであり、数値で表されるいくつかのグラフを標準入力 (通常は記述ファイル) から読み取り、Prim のアルゴリズムを使用してすべてのグラフの最小スパニング ツリーを見つける小さなプログラムです (まだ結果は出ていませんが、解決策を見つけるだけです)。

何が起こっているのかを見つけるためにstraceを使用する必要があることを学びました.これが私が得たものです:

ubuntu を実行していますが、この種のエラーが発生するのはこれが初めてです。プログラムは、入力から 2 つのゼロを続けて読み取った後に停止することになっています。これは、グラフ記述ファイルにあることを保証できます。また、グラフファイルへの入力リダイレクトを行わずにプログラムを実行しても問題が発生します。

0 投票する
2 に答える
21840 参照

c++ - execve() は何をしますか?

execve() は正確に何をしますか? 私はドキュメント (http://linux.die.net/man/2/execve) を見てみましたが、Linux に非常に慣れていないため、この種のプログラミングはあまり意味がありません。私がやりたいことは、このコマンドを実行できるようにすることです:

次のようなことはできますか (someport は 4444 などの番号です)