当前位置: 技术问答>linux和unix
C程序如何同时做2件事?
来源: 互联网 发布时间:2014-10-24
本文导语: UNIX C编程有这样一个问题:某程序运行后,要同时做两件事 待其中一件事完毕,另一件事(放音乐)终止, 好象通过多线程可完成这个问题,但不知如何做? 最好有例子程序! 谢谢 |提供一个例子,...
UNIX C编程有这样一个问题:某程序运行后,要同时做两件事
待其中一件事完毕,另一件事(放音乐)终止,
好象通过多线程可完成这个问题,但不知如何做?
最好有例子程序!
谢谢
待其中一件事完毕,另一件事(放音乐)终止,
好象通过多线程可完成这个问题,但不知如何做?
最好有例子程序!
谢谢
|
提供一个例子,供你参考. #include #include void sig(int signo) { //子进程接到信号后做一些终止前的善后工作 exit(0) ; } void ChildFunc() { //播放音乐等后台进程 } void ParentFunc() { //父进程工作函数 } //////////////////////////////////////////////////////////////////// main() { int pid ; switch((pid = fork())) { case 0 : //child process if(signal(SIGUSR1, sig) == SIG_ERR) { perror("signal") ; exit(-1) ; } ChildFunc() ; break ; case -1 : perror("fork") ; break ; default : //parent process ParentFunc() ; kill(pid, SIGUSR1) ; //工作完后发信号给子进程要求其终止 wait(0) ; //等待子进程终止 break ; } //switch printf("program over!n") ; }
|
使用线程的例子 // do2things.c // build: cc -o do2things -Wall do2things.c -lpthread #include #include #include #include #include static int ok_to_exit=0; // function for thread void * thread_func(void *arg) { char *ret_val=(char*)malloc(128); while(!ok_to_exit){ fprintf(stdout,"I'm working!n"); } sprintf(ret_val,"ok,i'll exit"); pthread_exit(ret_val); return ret_val; // only to avoid warning message at compile time } int main(int argc, char* argv[]) { int i=0; char *ret_buf; pthread_t ptid; // set up the thread to play music in background pthread_create(&ptid, NULL,thread_func,NULL); // do your main work ... for(i=0;i