問題タブ [execl]
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 - exec() 関数とそのファミリーについて説明してください
exec()
関数とそのファミリーは何ですか? なぜこの関数が使用され、どのように機能するのですか?
誰かこれらの機能を説明してください。
c - C - fork() & execl() & loop + "ハーフピラミッド出力"
以下で悩んでいます。たとえば、2 つのプログラムがあり、1 つは "input.c" で、2 つ目は "output.c" です。出力は単純なもので、次のようになります (最も重要な部分のみを貼り付けます)。
outputbin.c
そして、これは私のinput.cからの主な一節です:
gcc を使用してこのプログラムをコンパイルし、これを実行すると (argv[2] なしで): ./input 10次の ようになります。
大丈夫ですが、このコードを削除するまでは - " printf("%s", input); " と " execl " のコメントを外してください:
そして実行: ./a.out 10 ./outputbin
私はこれだけを得る -あなたの出力は: A
最初の文字だけで、それだけです。文字列の「半ピラミッド」全体を行ごとに実行するにはどうすればよいですか? 何を試しても、すべてが同じ結果に終わります。
c - パイプの内容を画面に出力
を使用して、execlp()
子プロセスでコマンドを実行し、パイプに保存して、親によって読み取られるようにします。
場合によっては、親は何も実行する必要はなく、パイプの内容を画面に出力するだけで、パイプを画面に出力するにはどうすればよいですか (出力サイズが不明なため、変数に格納しない可能性があります)。
c - C - 出力のジャンク文字
たとえば、input.c と output.c という 2 つのプログラムがあるとします。実行したいのは、execl() 関数を使用して、「半ピラミッド」形式のペイロード/文字を別のプログラムに送信することだけです。
入力.c
コメントされた箇所は、デバッグのみを目的としています。ご覧のとおり(試行中)、印刷したいだけの場合は、すべて正常に機能します。
output.c (または「 target.c 」が必要な場合)
次のようにinput.cをコンパイルすると:
& output.c:
Ok。これですべての準備が整いました。たとえば、長さ 6 のペイロードを送信したいとします。
しかし、私が出力するのはこれだけです(または単に別のジャンク文字を使用):
私は非常に多くのことを試しましたが、それらはすべて失敗し、上記のように出力は同じでした.
誰かが私を助けて、問題がどこにあるかを教えてくれれば、とても感謝しています。fork() と execl() 関数を一緒に使用すると問題が発生する可能性がありますか?
c - Cで数値を変数に変更するにはどうすればよいですか?
Cで変数の値を代入する方法を知りたいです。
「30828」は値が固定されていないため、変数に変更できるようにしたいと考えています。あなたができるSHELLのようなことができるかどうか疑問に思っています。たとえば、シェルでは次のことができます。
c - execl() 関数を使用してカット コマンドで stdin を実行する方法は?
私の目的は、FIFO を介して子と親の間で IPC を作成することです。子供は走ればいい
出力を親の入力にリダイレクトし、親は次のコマンドを実行する必要があります。
これをコマンドラインに出力します。
現在、FIFO を正常にリンクし、子プロセスの出力を親プロセスの入力にリダイレクトしました。複数のテストを行ったところ、その接続は正しく機能しています。問題は、カットの execl にあり、次のようになります。
しかし、そうではないことは確かです。
main は現在、fifo (mkfifo)、forks() を作成し、関数を呼び出すだけです。私の問題は、親の stdin (running cut) にある可能性がありますが、そうは思わないか、または execl() が stdin から直接読み取ると想定していて、そうではありません。execl() を介して「カット」を適切に記述していないためだと思います。
コードの修正、またはいくつかのアイデアを表現した方法でさえ、私が何かを正しく理解していないことを示している可能性があるため、非常に高く評価されます。助けてくれてありがとう
c - プロセスの実行後に execl で「Enter」キーを押す必要があるのはなぜですか?
bash では、ls
入力して Enter キーを押すと、バイナリls
が実行され、何もしなくてもシェル プロンプトに戻ります。
ただし、C で記述されたこのプログラムはブロックされます。
なんで?
出力は次のとおりです。
この時点でEnter、bash プロンプトに戻るためにヒットする必要があります。なんで?