哪个用户可以使用setpgid()函数?

Bhu*_*esh 5 c linux

当我执行此函数时,我为setpgid()计算了函数,结果将被拒绝.然后我以root用户身份登录该时间,这将打印错误消息,因为权限被拒绝.然后哪个用户可以使用此功能.有谁可以向我解释一下?

   #include<stdio.h>
   #include<unistd.h>
   #include<stdlib.h>

  main()
   {
    printf("parent pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
    pid_t pid,pgid;
    pgid=getpgid(getpid());
    if((pid=fork())==0)
    {
            printf("befor sessionchild pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
            sleep(5);
            pid_t p;
            printf("child pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
            if((p=fork())==0){
                    sleep(2);
                    setsid();
                    printf("child2 pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
                    setpgid(getpid(),pgid);
                    perror("Error");
                    printf("after setting group id child2 pid=%d\tpgid=%d\n",getpid(),getpgid(getpid()));
            }
            wait(0);
            exit(0);
    }
    exit(0);
  }                                        
Run Code Online (Sandbox Code Playgroud)

Kar*_*ath 0

这不是你应该如何进行错误处理的方式。

检查每个API 调用的返回值,查找错误。

如果(且仅当)发生错误,那么您应该检查errno并使用perror.