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

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

c++ - How to use execl as replacement for system

I want to execute command echo test with execl Why ? Because i can't use system() i have some reasons What is wrong ?

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

c - execl & printf - オーダー

これには小さな問題があります:

すべて正常に動作しますが、なぜexecl前に実行されるのprintfですか? 誰かが私を助けることができますか?

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

c - C を使用してパラメーターを別の関数に渡す

上記はvalidate.cの実装ですが、pipe()、dup2、execl()を使って関数にユーザーIDやパスワードなどの値を渡すにはどうすればよいですか

私は次のものを使用しました`

}

しかし、プロンプトは常に入力を再入力するように求めます。このアプローチの何が問題なのですか?

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

c - bash インタープリター linux、fork - execl の読み取り/書き込み stdin/out

コマンドを bash シェル (/bin/sh) に送受信するプログラムを作成しようとしています。bash シェルのラッパー プログラムのように。したがって、stdin に「cd ~/Desktop」と書き込んでから、もう一度「ls」と書き込めば、デスクトップ上のファイルのリストを受け取ることができます。私はそれを機能させることはできません。このコードの 2 番目の書き込みコマンドでは、stdin に書き込んだ内容がすべてエコー バックされます。popen() も使用してみましたが、出力のみが提供され、標準入力に書き込むことはできません。誰かがこの問題を解決するのを手伝ってくれませんか? ありがとう

}

編集 - 最初の回答ごとにコードを更新しました。現在、2 番目の read() 呼び出しからの出力はありません。

}

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

c - Cでargvを介したパイプを使用して文字配列を送受信する

そのため、argv[] を介して接続するパイプを介して char 配列を前後に送信するパイプを作成しようとしています。現在、db.c で文字 3 と 5 を受信するために、interface.c で配列 (親から子に c_param に送信される param) を受信することに行き詰まっています。3 と 5 が私のパイプがある argv[] のインデックスであることはわかっていますが、それを取得して db.c にメッセージを出力する方法がわかりません。

interface.c は、パイプ、フォークを親プロセスと子プロセスに作成します。char 配列 param は、子プロセスに char 配列 c_param に転送されます。snprintf を使用して、パイプを char に変換し、char 配列 c_param で execl を使用して送信しました。

interface.c:

db.c は interface.c execl から起動し、argv[] を介してパラメーターを受け取り、それを出力する必要があります。db.c

これは私が得ている現在の出力です。5 と 3 は、メッセージを送信し、現在 db.c で印刷しようとしているメッセージを受信するために必要なインデックスであることを認識しています。

出力 (db.c):

十分な情報を提供できたことを願っています。前もって感謝します!

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

c - execl() が成功したかどうかを確認する方法 (複数プロセス)

fork() で複数の子プロセスを作成し、execl() で実行ファイルを実行させました。

失敗した execl() があるかどうかを確認したい (例: 存在しないファイルを実行しようとする)。によって、すべてのプログラムを execl() しようとし、そのうちの 1 つが失敗した場合は、start が任意のプログラムと通信する前に 1 を返します。

ここに参照コードがあります(すべての設定が正しいと仮定します)

このプログラムはまだメッセージを「存在しない」に送信しました (ただし、期待どおりに何も返されませんでした)。

とにかく私の目標を達成する方法はありますか?ありがとうございました!

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

c++ - 不正なアドレスが原因で exec が失敗する

exec に重大な問題があります。list(execl) と array(execv) の両方のオプションを試しましたが、問題は残ります。呼び出しを行う関数を示します。

}

aparams[0] には、実行可能ファイルの名前の文字列が含まれています。たとえば、「test」としましょう。コンパイルしました -> g++ test.cpp -o test -> この実行可能ファイルを取得しました。aparams の他の位置には、テスト プログラムのいくつかの引数が含まれます。

そのため、テストは実行されず (コマンド ラインから実行した場合は問題ありません)、perror に "The problem in exec is: Bad Address." というメッセージが表示されます。

また、すべての引数 (const char*) をキャストしようとしましたが、何も変わりませんでした。引数の問題ですか?それとも実行可能ファイルの問題ですか?