-1
私はfork()
を使用してコードを実行する子プロセスを生成しますが、子プロセスでは以下のようなコードが実行されません。 switch()
で文章を削除すると、正しく実行されますが、なぜこれが起こるのか理解できません。fork()によって生成された子プロセスのコードの一部がスキップされる
pid_t pid = fork();
if(pid == 0){
int execl_status = -1;
printf("child is running"); // this will not run
switch(cmdIndex)
{
case CMD_1:
execl_status = execl("./cmd1","cmd1",NULL);
break;
case CMD_2:
execl_status = execl("./cmd2","cmd2",NULL);
break;
case CMD_3:
execl_status = execl("./cmd3","cmd3",NULL);
break;
default:
printf("Invalid Command\n");
break;
}
}
'printf'行を' printf( "child \ n"); 'に変更してください。 '\ n'がなければ' printf'は 'stdout'を直ちにフラッシュしないので、実行されていないかのように見えるかもしれません。それ以外の場合は、子プロセスが実行されない別の理由がわかりません。 'fork()'が '-1'を返さなかったことも確認しましたか? – Pablo
@Pabloありがとう、これは私のために働く、あなたは答えを追加することができます、私はこの問題を閉じるでしょう。 – laoqiren