
作业社区
探索学习新天地,共享知识资源!
向佐佐 的学生作业:
#include #include #include #include void *do_thread(void *arg) { printf("Thread start():\n"); return NULL; } int main(void) { pthread_t tid_1,tid_2; int err_1,err_2; err_1 = pthread_create(&tid_1,NULL,do_thread,NULL); if(err_1 != 0) { fprintf(stderr,"[ERROR]pthread create() 1:%s\n",strerror(err_1)); } printf("tid_1:%ld\n",tid_1); err_2 = pthread_create(&tid_2,NULL,do_thread,NULL); if(err_2 != 0) { fprintf(stderr,"[ERROR]pthread create() 2:%s\n",strerror(err_2)); } printf("tid_2:%ld\n",tid_2); return 0; } 【图片】





Linkus 的学生作业:
Hero(const string &name) Shooter(int distance) HouYi() name : HouYi distance: 600 legLen : 330 ~Luban() ~Shooter() ~Hero() #include using namespace std; class Hero { public: Hero(const string &name = "hero"); ~Hero(); void skill(void); string getName(void) const{ return name; } private: string name; }; Hero::Hero(const string &name) { cout





沫颖 的学生作业:
代码 /* 1-10 信号的处理-课后练习 练习 创建两个子进程 A 与 B,给子进程 A 发送 SIGUSR1 信号, 子进程 B 发送 SIGUSR2 信号,子进程A的处理方式设置为默认,子进程B的处理方式为使用自定义处理函数,并打印接收的信号的字符串信息(使用strsignal() 函数) */ #include #include #include #include #include #include #include // 进程自定义处理函数 void do_sig_usr(int sig) { fprintf(stdout, "Received signal %s\n", strsignal(sig)); } int main() { // 进程id pid_t cpid; // 注册信号处理函数返回值 __sighandler_t sig_ret; // 注册信号自定义处理函数 sig_ret = signal(SIGUSR2, do_sig_usr); if (sig_ret == SIG_ERR) { perror("[ERROR signal() 1: ]"); exit(EXIT_FAILURE); } // 创建子进程 cpid = fork(); // fork失败 if (cpid == -1) { perror("[ERROR fork() 1: ]"); exit(EXIT_FAILURE); } else if (cpid == 0) // 子进程A { fprintf(stdout, "子进程A start, pid : %d\n", getpid()); // 等待信号唤醒 pause(); fprintf(stdout, "子进程A end, pid : %d\n", getpid()); exit(EXIT_SUCCESS); } else if (cpid > 0) { pid_t ccpid; // 创建子进程B ccpid = fork(); // fork失败 if (ccpid == -1) { perror("[ERROR fork() 2: ]"); exit(EXIT_FAILURE); } else if (ccpid == 0) // 子进程B { fprintf(stdout, "子进程B start, pid : %d\n", getpid()); // 等待信号唤醒 pause(); fprintf(stdout, "子进程B end, pid : %d\n", getpid()); exit(EXIT_SUCCESS); } else if (ccpid > 0) { // 先让子进程运行 sleep(1); // 父进程 fprintf(stdout, "父进程 start, pid : %d\n", getpid()); // 给子进程A发送SIGUSR1信号 kill(cpid, SIGUSR1); // 给子进程B发送SIGUSR2信号 kill(ccpid, SIGUSR2); // 等待子进程结束 wait(NULL); fprintf(stdout, "父进程 end, pid : %d\n", getpid()); exit(EXIT_SUCCESS); } } return 0; } 结果 felix@felixlinux:~/Desktop/Study/CProjects/imooc-embedded/Stage05/Week12/Class04$ gcc demo_4_10.c felix@felixlinux:~/Desktop/Study/CProjects/imooc-embedded/Stage05/Week12/Class04$ ./a.out 子进程A start, pid : 12805 子进程B start, pid : 12806 父进程 start, pid : 12804 Received signal User defined signal 2 子进程B end, pid : 12806 父进程 end, pid : 12804




