在终端中使用su命令时 遇到了:认证失败 这样的错误。
此时是因为Ubuntu 安装后,root用户默认是被锁定了的,不允许登录,也不允许 “su” 到 root。
需要通过改变安装时的默认密码,
在终端内输入 sudo passwd 即可,接着输入新密码两次。
许多博客文章介绍的是 sudo password, 然而在Mac 版的linux16.04中会查无此命令。
问题情景:
父子进程循环显示自己的进程号与优先级,SIGINT和SIGTSTP两个信号量控制进程优先级的加减。
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <wait.h>
#include <unistd.h>
#include <signal.h>
typedef void (*sighandler_t)(int);
void sigplus(){
setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())+1);
}
void sigminus(){
setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,getpid())-1);
}
int main(int argc, char *argv[]){
int i,j,status;
int pid;
struct sched_param p[2];
for(i=0;i<2;i++){
p[i].sched_priority = 0;
}
pid=fork();
if(pid<0) printf("进程创建失败");
else if(pid>0){
signal(SIGINT,(sighandler_t)sigplus);
signal(SIGTSTP,(sighandler_t)sigminus);
sched_setscheduler(getpid(),SCHED_OTHER,&p[0]);
setpriority(PRIO_PROCESS,getpid(),0);
sleep(1);
for(j=0;j<10;j++){
printf("ParentPid=%d priority=%d scheduler=%d\n",getpid(),getpriority(PRIO_PROCESS,getpid()),sched_getscheduler(getpid()));
// printf("第%d次循环 ctrlc加一 ctrlz减一\n",j);
// if(j%2==1) pause();
sleep(1);
}
}
else{
signal(SIGINT,(sighandler_t)sigplus);
signal(SIGTSTP,(sighandler_t)sigminus);
sched_setscheduler(getpid(),SCHED_OTHER,&p[1]);
setpriority(PRIO_PROCESS,getpid(),0);
sleep(1);
for(j=0;j<10;j++){
printf("ChildPid=%d priority=%d scheduler=%d\n",getpid(),getpriority(PRIO_PROCESS,getpid()),sched_getscheduler(getpid()));
// printf("第%d次循环 ctrlc加一 ctrlz减一\n",j);
// if(j%2==0) pause();
sleep(1);
}
exit(EXIT_SUCCESS);
}
return EXIT_SUCCESS;
}