fork()
とexec()
の組み合わせを使用してlinuxでいくつかの外部コマンドを実行しましたが、実際にはシンボリックリンクである/usr/bin/firefox
を実行しようとするとコードが失敗するようですバイナリ。exec()がfirefoxで動作していない
誰もこの問題を解決する方法を知っていますか?私は他のプログラム(本当に実行可能なバイナリであり、シンボリックリンクではない)でテストしています。ここで
は、プログラムからのコードです:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
#include <errno.h>
int main(int argc, char **argv) {
pid_t pid;
// this was the old line:
// char *parmList[] = {"", "index.html", NULL};
// and this is the one that solves the problem:
char *parmList[] = {"firefox", "index.html", NULL};
int a;
if ((pid = fork()) == -1)
perror("fork failed");
if (pid == 0) {
a = execvp("/usr/bin/firefox", parmList);
fprintf(stdout, "execvp() returned %d\n", a);
fprintf(stdout, "errno: %s (%d).\n", strerror(errno), errno);
}
else {
waitpid(pid, 0, 0);
}
return 0;
}
は編集:私は答えを含めるために、コードを更新し、問題が本当にすべてでシンボリックリンクが原因であるようには見えなかったので、トピックのタイトルを変更しました。みんな、ありがとう。あなたは出力に右execvp
た後、いくつかの診断いくつかのコードを追加したい場合があります
あなたがそれを貼り付けるように、すでに実行中のFirefoxと、Firefoxが閉じられています。 Firefoxが既に開いている場合は、新しいタブが開きます。その他のエラーの詳細はありますか? –
「失敗する」とはどういう意味ですか? – bk1e
私は単にそれを動作させることができません、私は本当に何が間違っているのか分かりません:\ – pwseo