我有一个任务是从命令行获取一个字符串,将其反转并使用 fork() 在单独的子进程中输出每个字符。我只是没有从 fork() 调用中获得正确的输出。问题是索引在输出时会变得混乱,比如 3, 1, 2, 0 当它应该只是 3,2,1,0 ......等等......更令人困惑的是它随机成功时word 长度为 3 个字符(但并非总是如此),但通常对于 4 个以上字符的单词是不正确的。在没有 fork() 调用的情况下,循环可以正常工作。
这是我的主要功能,问题存在于for循环中。
int main(int argc, char **argv){
pid_t childpid = 0;
int i;
char* invert = new char[strlen(argv[1])+1];
int invert_length = strlen(argv[1]);
strcpy(invert, argv[1]);
for(i=invert_length-1; i>=0; i--){
childpid = fork();
if(childpid==(pid_t) 0){
//I am the child
cout<<"Child ["<< i <<"] = " << invert[i] <<"."<<endl;
break;
}
}
return 0;
}