2

プロジェクトに取り組んでいて、execl() を呼び出すと、機能しません。フォークの後に呼び出され、現在のファイルを再実行することになっています。(引数はファイルの前の方で宣言されています):

argument = argv[0];
int err =execl(argument, argument, left, "1", NULL);
if (err == -1)  printf("never execled");

私が読んだことはすべて、これがうまくいくはずだと私に思わせます。最初の引数はパスを指定し、2 番目は実行するファイル、3 番目は文字列、4 番目はプレースホルダーで、execl が通過するときに arc == 3 になり、4 番目は null ターミネータです。

誰でも助けることができますか?

4

1 に答える 1

2

argv[0]ファイル名のみを保持しますが、execl必要な完全なディレクトリ パスは保持しません。

次のように sth を試してください。

char *cwd;
cwd=malloc(255);
getcwd(cwd,255);
strcat(cwd,"/");
strcat(cwd,argv[0]);

で構築された上記を使用cwdexeclます。

于 2013-10-15T17:44:39.587 に答える