char *s = "dsfsdf" s 指向字符串常量区的字符串 而s[0] = 'a' 试图修改常量区的东西 当然会报错了 因为是不可修改的 如二楼所说 char s[] = "sdfsdf“ s[0] = 'a'; 这样可以是因为你是在栈上开辟了一块空间 并将常量区的字符串拷贝了一份存放到了栈中的数组当中 这时候修改就是可以的了
child[0] = creat_child();//问题就在这里。段错误 —— 这个语句本身没有问题,可能问题出在creat_child函数体中:
process *child;
child->pid = fork(); // 此时指针child没有指向任何对象(野指针),为其所指对象的成员赋值是不妥的。在这两个语句之间增加一个为child分配内存的语句试试,即:
process *child;
child=(process *)malloc(sizeof(process));
child->pid = fork();