Nicky Chorley <ndchor...@gmail.com>于2022年8月9日 周二20:31写道:
> Hi folks, > > I wrote a small program to start a new process (a shell), create a > cgroup and add the process to it. This all works fine - the process ID > of the shell ends up in the cgroup.procs file and when my program > exits, cgroup.procs ends up empty as expected. If I try and remove the > cgroup directory, though, I get a load of "Operation not permitted" > errors and I'm not sure why. I'm running on openSUSE (kernel 5.3.18) > with cgroups v2. > > My program looks like: > > #define _GNU_SOURCE > #include <sched.h> > #include <signal.h> > #include <stdio.h> > #include <stdlib.h> > #include <sys/stat.h> > #include <sys/wait.h> > #include <unistd.h> > > int startShell(void *argument) { > char* arguments[] = {"bash", NULL}; > char* environment[] = {NULL}; > execve("/bin/bash", arguments, environment); > > return 0; > } > > int main() { > mkdir( > "/sys/fs/cgroup/my_group", > S_IRWXO | S_IRGRP | S_IROTH > ); > > int stackSizeBytes = 65536; > char *stackStart = malloc(stackSizeBytes); > char *stackEnd = stackStart + stackSizeBytes; > > pid_t childPid = clone( > startShell, > stackEnd, > SIGCHLD, > NULL > ); > > FILE* procsFile = fopen( > "/sys/fs/cgroup/my_group/cgroup.procs", > "w" > ); > > fprintf(procsFile, "%d\n", childPid); > fclose(procsFile); > > waitpid(childPid, NULL, 0); > > return 0; > } > > and output looks like: > > $ su -c ./run > Password: > > # echo $$ > 4382 > # cat /sys/fs/cgroup/my_group/cgroup.procs > 4382 > 4522 > # exit > $ cat /sys/fs/cgroup/my_group/cgroup.procs > $ su -c "rm -rf /sys/fs/cgroup/my_group" You have to use rmdir to remove > > Password: > rm: cannot remove '/sys/fs/cgroup/my_group/cgroup.events': Operation > not permitted > rm: cannot remove '/sys/fs/cgroup/my_group/memory.events': Operation > not permitted > ... other lines omitted for brevity > > Could someone please help me understand what's going on here? > > Thanks! > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies