C 每n秒更改PID的程序

C 每n秒更改PID的程序,c,C,我不熟悉C语言的系统编程 在这里,我试图编写一个程序,每(n=2)秒更改一次PID。但在编译时,我每次都得到相同的PID。PID永远不会改变。有人有主意吗 这是我的密码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(){ printf("Programme qui change de PID toutes les deux secondes \n"); pid_t

我不熟悉C语言的系统编程

在这里,我试图编写一个程序,每(n=2)秒更改一次PID。但在编译时,我每次都得到相同的PID。PID永远不会改变。有人有主意吗

这是我的密码:

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

int main(){

printf("Programme qui change de PID toutes les deux secondes \n");
pid_t fils;

while(1){
    printf("I'm %d\n",(int)getpid());
    sleep(5);
    fils = fork();
    if(fils < 0){
        perror("Fork child \n");
        exit(1);
    }
    else if (fils ==0 )
        exit(0); 

}
return 0;
}
#包括
#包括
#包括
int main(){
printf(“第二次会议的计划变更”);
pid_t fils;
而(1){
printf(“我是%d\n”,(int)getpid());
睡眠(5);
fils=fork();
如果(fils<0){
perror(“Fork child”\n);
出口(1);
}
else如果(fils==0)
出口(0);
}
返回0;
}

PID没有改变的原因是过程PID从未改变。检查PID值时,代码始终在父进程中


现在,每个子进程都将收到自己的PID。您可以让子进程在退出之前获取/显示其“PID”。

PID未更改的原因是进程PID从未更改。检查PID值时,代码始终在父进程中

现在,每个子进程都将收到自己的PID。您可以让孩子在退出之前获取/显示其PID。

else if (fils ==0 ){
    //<- here
    //printf("my pid is %d\n", getpid());
           exit(0);  
}
else如果(fils==0){
// 这个

else如果(fils==0){

//尝试将
else if(fils==0)
更改为
else if(fils>0)
。如图所示,您的代码退出子进程,并让同一个/第一个父进程继续运行。由于它是同一个进程,其pid当然保持不变。@kaylum,它可以工作!谢谢:)细微的挑剔:在C中表示非终止循环的标准方法是(;;)的
因为它避免了
while(1)
条件中的常量值布尔值(一些lint抱怨)。而且它的输入时间更短!@Jens:谢谢你的建议:)@Jens:
while(true)
完全是惯用的C。尝试将
else if(fils==0)
更改为
else if(fils>0)
。如图所示,您的代码退出子进程,并让同一个/第一个父进程继续运行。由于它是同一个进程,其pid当然保持不变。@kaylum,它可以工作!谢谢:)细微的挑剔:在C中表示非终止循环的标准方法是(;;)的
因为它避免了
while(1)
条件中的常量值布尔值(一些lint抱怨)。而且它的输入时间更短!@Jens:谢谢你的建议:)@Jens:
while(true)
完全是惯用的C。谢谢你的答案:)谢谢你的答案:)谢谢你的答案:)谢谢你的答案:)谢谢你的答案:)