⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test10.c

📁 这个是学习嵌入式开发的重要例子
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <sys/wait.h>void child_process_main1(void);void child_process_main2(void);void child_process_main3(void);int main(int argc, char **argv){  pid_t pid1, pid2, pid3;  pid1 = fork();  if (pid1 < 0)  {    // output_error_message();  }  else if (pid1 == 0)  {    child_process_main1();    exit(0);  }  pid2 = fork();  if (pid2 < 0)  {    // output_error_message();  }  else if (pid2 == 0)  {    child_process_main2();    exit(2);  }  int status;  pid_t returned_pid;  for (;;)  {    //returned_pid = wait(&status);    //pid_t waitpid(pid_t pid, int *stat_loc, int options);    //returned_pid = waitpid(-1, &status, 0);    //returned_pid = waitpid(0, &status, 0);    //returned_pid = waitpid(-1*getgid(), &status, 0);    returned_pid = waitpid(pid2, &status, 0);    printf("wait() returned.\n");    printf("child process (pid = %d) exited.\n", returned_pid);#if 0    if (returned_pid == pid1)    {      printf("child process 1 exited.\n");    }    else if (returned_pid == pid2)    {      printf("child process 2 exited.\n");    }    else    {      printf("unkonwed error.\n");    }#endif#if 0    if (returned_pid < 0)    {      printf("wait() failed: %s.\n", strerror(errno));    }    else if (returned_pid != pid2)    {      returned_pid = wait(&status);      printf("wait() returned.\n");      printf("child process (pid = %d) exited.\n", returned_pid);      break;    }    else    {      printf("child process 2 exited.\n");      continue;    }#endif    switch ((int) returned_pid)    {      case (int) pid1:	//connect_to_control_center();	break;      case (int) pid2:	//connect_to_device_1();	break;      case (int) pid3:	//connect_to_device_2();	break;      default:	break;    }  }  return 0;}void child_process_main1(void){  printf("[%d]child process main()\n", getpid());  //connect_to_control_center();}void child_process_main2(void){  printf("[%d]child process main()\n", getpid());  //connect_to_device_1();  //sleep(10);}void child_process_main3(void){  printf("[%d]child process main()\n", getpid());  //connect_to_device_2();  //sleep(10);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -