私は5つの子プロセスを生成し、次にexecvpをisEvenという2番目のプログラムに生成し、渡された数値が偶数であるかどうかを確認するサイドプロジェクトに取り組んでいます。しかし、execvp呼び出しはgdbで実行しても失敗し続け、実行されません。 argsとload(args)はどちらも別の関数で呼び出されます。c execvpを使ったプログラミング
ありがとうございます!!!
//Code to load binary
void load(char* args[])
{
execvp("./isEven", args);
printf("ERROR\n");
}
//args being passed in
char *args[] = {"./isEven", number, NULL};
load(args);
私が書いたより小さいプログラムは、私が今やっていることと同じことをしています。 Gdbは私がセグメンテーション違反を得ていると言います。
int main(int argc, char *argv[])
{
int returnCode = fork();
if(returnCode == 0)
{
char *args[] = {"./isEven", 12345, NULL};
execvp("./isEven", args);
printf(errno);
printf("ERROR: execvp failed\n");
exit(-1);
}
else if(returnCode < 0)
{
fprintf(stderr, "fork failed\n");
}
else
{
//i am the parent
printf("I am the parent");
}
return 1;
}
「数値」とは何ですか?残りのプログラムはどこですか? (プログラムの残りの部分が大きすぎる場合は、それを小さくして問題がまだ起きているかどうかを確認してください) – Ryan
execvpは、失敗した場合に 'errno'を設定します。 – tkausl
私はexecvpを動作させることができるかどうかをテストするための簡単なプログラムを書いたが、gdbは私にseg faultを与えている。 – Steven