execvp

    2

    1答えて

    私自身で別のプログラムを実行しようとしていますが、いくつか理解できません。だから私はこのコードを書いた: void run() { cout << "##Run" << endl; pid_t process_id = fork(); if (process_id == 0) { char* args[] = { "sudo", "ls", "-l" };

    1

    1答えて

    私は、作成しているbashシェルに||、&&、および;の演算子を実装しようとしています。私がしようとしているのは、intをフラグとして使用して、成功した場合は1に設定し、そうでない場合は0に設定します。私の問題は、私はそれが1にフラグを設定するなどls -applesとして無効な操作を入力した場合でも、私はまた、エラーメッセージが出ていることである LS:無効なオプション - 「E」「にLS --

    -1

    2答えて

    私はforkとexecvpを同時に使用して、2つのシェルコマンドを同時に実行しようとしています。私はmkdir folder1&mkdir folder2を入力すると、folder1という名前のフォルダとfolder2?という名前の別のフォルダを作成します(疑問符はフォルダ名に含まれています)。もう1つの問題は、2つのコマンドを実行した後でコードが終了することです。 #include <stdio

    0

    2答えて

    私は実行可能ファイルa.outにいくつかの引数を取っています:command-lineこの実行可能ファイルはroot特権で実行する必要があります(sudo ./a.out arg1 arg2 ...など)。 execvpシステムコールをC++で使用するにはどうすればよいですか?

    2

    2答えて

    execvpコマンドがファイルに送信されるようにファイル記述子を変更したいと思います。その後、stdoutをコンソールにリセットし直したいと思います。 これは私がこれまで持っているものです。 int main() { printf("to console\n"); int stdoutfd = dup(STDOUT_FILENO); FILE* file = fope

    0

    1答えて

    ちょうどタイトルを詳述するために、私はexecvp()が呼び出されたときに非常に不正確なランダムな不良アドレスを取得しています。 nano、cdなどをエコーすることができます。しばらくの間、私は悪いアドレスで殴られます。 私は文字列のベクトルを使用しています。文字列のベクトルをconst char **に変更し、最後にnullを追加しています。 nullが常に読み込まれるとは限りません。 何か助け

    0

    2答えて

    私はUnixコマンドを受け取り、不正なアドレスエラーを受け続けるシェル "bosh>"を作ろうとしています。私は自分のコードがコマンドを読み込んで構文解析することを知っていますが、何らかの理由でそれらを実行させることができず、代わりに「不良アドレス」エラーが発生します。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #i

    0

    2答えて

    私は、libcライブラリに直接リンクするRustのシェルを書こうとしていました。 Vec<String>を使用して、引数をexecvp()に渡しましたが、char **への変換が成功していないようです。実行時に、すべてのパラメータがNULL文字列になりました。 ここにコードがあります。 fn safe_execvp(path: String, argv: Vec<String>) -> Resul

    -4

    1答えて

    forkとexecvpを使用して単純なシェルを作成しています。プログラムを実行したときに、lsまたはls -lのようなコマンドを入力すると、それはどのように好きなのですか?それが終わると、私のプログラムは別のコマンドを待ってそこに座っていますが、別の有効なコマンドを入力したり、同じコマンドを入力したりしています。 execvpはls: cannot access 'ls': no such fil

    1

    1答えて

    コマンドを実行できないときはいつでも、「バイナリを実行するとエラー:-nameOfBinary-」というシェルを作ろうとしています。しかし、それは常に私に "No such file or directory"というメッセージを与えるということです。 相続人の私のコードの一部:コード付き void handle_SIGINT() { write(STDOUT_FILENO,line,st