問題タブ [execvp]
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 - Cでfork()とexecvp()を使用して複数の順序付けられたプロセスを作成するにはどうすればよいですか?
fork()とexecvp()の呼び出しを使用して複数のプロセスを作成しようとしていますが、これまでのところ失敗しています。これが私がやろうとしていることです:
プロセスA、B、Cは同時に実行する必要があります。それらが終了したら、プロセスDを実行する必要があります。完了すると、プロセスEとFが実行されます。
プログラム名とその引数を渡すことでexecvp()を正常に呼び出すことができますが、fork()を何回呼び出す必要があるのかどこで呼び出すのかわかりません。wait()の呼び出し方法も知っていますが、どこで呼び出すべきかわかりません。
どうすればいいですか?
node.js - node.js で子プロセスを生成する際のエラー
少し ffmpeg コンバーター サービスを起動して実行しようとしていますが、これまでのところかなりの進歩を遂げています。しかし、変換のために実際の ffmpeg プロセスを生成することになると、私はレンガの壁にぶつかっています。
このコードを実行すると、次のコンソール出力が得られます。
すでにさまざまなノード バージョン (0.4.0、0.4.2、および 0.5.0-pre) をチェックしましたが、何の効果もありませんでした。
'ffmpeg '
もう 1 つの非常に奇妙な動作は、(単に ではなく)スペースを含む spawn を呼び出さなければならないという事実です'ffmpeg'
。このスペースを省略すると、別のエラーが発生します ( stderr: "/path/to/my/movie.mpeg": no such file or directory
)。シェルから直接 ffmpeg を呼び出すと、 child_process.spawn() に送信されたコマンドは問題なく実行されます。
そのヒントはありますか?同じことを達成する他のプロジェクトをすでにチェックしました(node-imagemagickやffmpeg-nodeなどですが、啓発は私を襲いませんでした...
更新: strace() 出力
を使用してアプリケーションを実行するstrace -fF -o strace.log node server.js
と、次のプロセス生成呼び出しを grep できます。
パスで奇妙にエスケープされた二重引用符を見た後、引用符なしで ffmpeg を呼び出そうとしました...魅力のように機能しました。しかし、問題は残ります。パスにスペースを使用できるようにする必要があります。
助言がありますか?
更新: 解決策
スペースで動作するようになりました。単純なinputfile.replace(' ', '\ ')
もので十分でした。
c - このコードのどこでwaitとwaitpidを使用する必要がありますか?
'$ ls-l|をシミュレートするプログラムを作成しました。wc-c'パイプを使用したコマンドのように。このコードでwaitまたはwaitpidをどこで使用すればよいかわかりません。
また、どこでパイプを閉じる必要がありますか?私のコードを確認して提案してください。
c - ac プログラムでオプションを指定してコマンドを実行する
ac プログラムで引数付きのコマンドを実行しようとしています。たとえば、ユーザーが「./a.out ls -la」でプログラムを実行すると
プログラムは、la オプションを指定して ls を実行する必要があります。
しかし、私はそれを行う方法がわかりません。
私のプログラムはフォークを使用します。
私はこの方法を試します:
しかし、うまくいきません。
コマンドで引数を渡す配列をexecvpの2番目の引数として渡したいのですが、ポインターと少し混乱しています(ポインターのポインターとはさらに混乱しています:s)。
引数にダッシュがあるため、これが機能しないことはわかっていますが、ダッシュを使用しない場合でも、プログラムは「la」オプションを処理せずに「ls」のみを起動します。
誰かが私を助けることができれば、私は良い方法を知ってうれしいです.
ありがとうございました。
c - 不明なコマンドを execvp() に挿入する
こんにちは、不明なコマンドを execvp に渡すと、errno に次のエラーが表示されます。「そのようなファイルまたはディレクトリはありません」というエラーが表示されるはずですが、「コマンドが見つかりません」
どうすれば2番目のエラーを取得できますか?
c - execvpe argv からパラメータ マッチング構文へのヘルプが必要
「互換性のないポインター型から 'execvp' の引数 2 を渡しています」というメッセージが表示され、
'char * const*' が予期されますが、引数の型は 'const char **' です<br> 正しい構文は何ですか? ありがとう!
c++ - ベクトルを execvp に渡す方法
ベクトルを execvp の 2 番目の引数として渡したいです。出来ますか?
c - ユーザー入力からシェルコマンドを取得し、Cプログラムを実行する
現在、Linuxシェルの入力コマンドを受け取り、それらを実行して子プロセスを作成するプログラムに取り組んでいます。
のような入力で動作し./program command arg
ますが、たとえば次のような引数を使用してさまざまなコマンドを受信する必要があります。./program command arg command arg .....
助言がありますか?
tcl - execvpのエミュレート-これを行うためのより良い方法はありますか?
私は現在、コマンドラインツール(espeak
)をTcl / Tkでラップしていますが、これまでにこれを理解しました。
system.soは、使用できるように一緒にハッキングした拡張機能ですexecvp
。
私が必要execvp
とする理由は、(Tcl)によって作成されたサブプロセスは、プロセスが終了exec
しても続行しているように見えるためです(これ^C
は、GUIから削除することで確認できます)が、を使用するexecvp
と、espeak
適切に終了します。
したがって、このスクリプトから本当に必要なのは、サブプロセスを開始してオンデマンドで強制終了できるようにすることだけです。
Expectのように、これを適切に実行できる別のライブラリはありますか?
c - grepはカスタムシェルでは機能しません
私はcでシェルを書き込もうとしていますが、grepを除いてほとんど機能します。シェルでgrepコマンドを実行すると、何も出力されません。これは、新しい子プロセスを作成し、その中でexecvp()を実行するために使用するコードの一部です。
dup2のファイル記述子(fd_inおよびfd_out)は、このコードを持つ関数に引数として渡されます。そして最も興味深いことに、「grep」または「grep --help」を指定すると、通常どおり表示されます。私は何かが足りないのですか?または、grepで何か特別なことをする必要がありますか?
これが私のシェルで起こることです:最後のコマンドはbashから実行されたときに出力されます。
コードは次のとおりです。