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

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

linux - Linux の異なる実行可能ファイル間の共有変数

私がやりたいことは、さまざまなプロセスからアクセスされるグローバル共有変数を作成することです。子プロセスを既存の実行可能ファイルに置き換えたい。

更新:これが解決策だと思います。コードはこちらからお借りしました。しかし、すべてのプロセスがファイルを mmap するために少なくとも 1 つの I/O 操作を必要とするため、より高速な方法はありますか?

mycode.h

app1.cc

含む

mycode.cc

どんな助けでも大歓迎です。

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

c - コマンドが使用可能であっても execv が失敗する

プログラムを実行するために手動で検索した後、execvを呼び出そうとしています。

私の場合、 c は、入力の受信中に渡された引数を持つ文字列の配列として args を持つ構造体です。nargs は引数の数です。c->args[0] には、「ls」、「cat」などが含まれます。

子プロセスでargs [0]、fullPathなどの値を出力してみました。それらはすべて「/bin/ls」、「/bin/cat」などの値を示します。しかし、execv を呼び出すと、errno が 2 の -1 が返されます。これは、「No such file or directory」のエラーであると理解しています。 . しかし、すべてのアクセス許可を確認した後に PathResolver が返すものであるため、ファイルがそこにあると確信しています。誰が私が間違いを犯した可能性があるかを指摘できますか.

//子の中で起こっている部分

PathResolver 関数

}

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

c - あるコマンド (execv) の出力を別のコマンドに送信する

たとえば、 ls | と同等のことをしたい場合 grep テストでは、親スレッドは STDIN で入力をリッスンする grep を実行し、子スレッドは ls の出力を STDTOUT に書き込みます。

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

c - バックグラウンドで実行されているプロセスが終了したかどうかを知る方法

ls 、 pwd などの基本的なコマンドを実行するために、C で基本的なシェルをコーディングしました。
たとえば、プロセスが完了するまで待機するのではなく、プロセスをバックグラウンドで実行できる機能があります。現在バックグラウンドで実行されているプロセスを含むリスト)
全体として、プロセスが完了したかどうかを知りたいので、リストから削除できます。
ありがとう

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

linux - execv の後、パイプ バッファーの内容が消える

親プロセスと子プロセスの 2 つのプロセスがあります。親プロセス stdin にはいくつかのデータがあります。内容は次のとおりです。

親プロセス コード:

子プロセス コード:

なぜ?子プロセスが stdin の 3 行目を読み取ることは可能ですか?

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

c - dup2() が出力を妨げています

私のコードを以下に貼り付けます。

出力をファイルにリダイレクトするために dup2 を使用しようとしています。

リダイレクトに使用すると(コメントを削除すると)正常に動作し、標準出力ではなくファイルに出力されます。例: ls > test 、結果として ls が test に出力されます。

問題は、 > なしの ls では何も出力されないことです。リダイレクトする機能はありませんが、コメント ls 出力をそのままにしておきます。

redirect[0] は < または > のいずれかであるか、何も指定されていません。 redirect[1] はリダイレクト先のファイルのパスです。

コマンドは、コマンドのpicesを含むcstringの配列です コマンドも同様です

コードをコメントした出力例

コードのコメントを外して

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

c - fork() してから execv() を実行すると、コンソールの所有者は誰になるでしょうか?

Linux アプリケーションを作成しています。fork()コンソール入力を受け取るアプリケーションを呼び出して実行するとどうなりますか? 以下のコードを検討してください。

問題は、Enter キーを押して停止するmy_other_appというメッセージもあります。では、呼び出しを行うとき、どのアプリケーションがそれを読んでいるのでしょうか? メインアプリケーションまたは起動した?getchar()my_other_appexecv

編集:my_other_appコンソールよりも優先されるテストを通じて表示されます。これは毎回起こりますか?コンソールが代わりにメイン プロセスによって所有されていることを確認する方法はありますか?