社区
系统维护与使用区
帖子详情
C程序如何同时做2件事?
binb
2000-06-11 12:03:00
加精
UNIX C编程有这样一个问题:某程序运行后,要同时做两件事
待其中一件事完毕,另一件事(放音乐)终止,
好象通过多线程可完成这个问题,但不知如何做?
最好有例子程序!
谢谢
...全文
467
8
打赏
收藏
C程序如何同时做2件事?
UNIX C编程有这样一个问题:某程序运行后,要同时做两件事 待其中一件事完毕,另一件事(放音乐)终止, 好象通过多线程可完成这个问题,但不知如何做? 最好有例子程序! 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hem
2001-05-18
打赏
举报
回复
参考
halfdream
2000-06-12
打赏
举报
回复
在UNIX类的操作系统上用多进程很方便。
用fork() 产生子进程,然后通过判断pid 的值知道是哪个进程。
呵呵,听了你提的第二个问题,觉得
你确实该看看书。 就算一般的操作系统书上都提过这些的。
fjp
2000-06-12
打赏
举报
回复
提供一个例子,供你参考.
#include <stdio.h>
#include <signal.h>
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") ;
}
solar
2000-06-12
打赏
举报
回复
使用线程的例子
// do2things.c
// build: cc -o do2things -Wall do2things.c -lpthread
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <pthread.h>
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<(1<<26);i++) ;
// your main work complete, end the thread
ok_to_exit=1;
pthread_join(ptid, (void**)&ret_buf);
fprintf(stdout,"thread returned: %s\n",ret_buf);
return 0;
}
binb
2000-06-11
打赏
举报
回复
请问新进程能执行主进程的子程序吗?
最好举个例子!
hu_zy
2000-06-11
打赏
举报
回复
用fork建一个新进程!
kxy
2000-06-11
打赏
举报
回复
哥们儿,你是不是不看书的:)
binb
2000-06-11
打赏
举报
回复
to kxy
虽然也编了几十万行程序,确实很少看书
请推荐几本好书
访问量千万的小
程序
都是怎么玩的?我总结了一个公式!
用最低的成本、最轻的手法,在微信里获取流量并产生裂变被称之为,当今“最牛运营手段”。用钱买流量已经成了“过去式”,用产品薅流量才是“新姿势”。小
程序
刷屏在微信里薅流量“刷屏”功不可没。但随着用户审美点越来越高,微信的规则越来越严格,“刷屏”的难度也越来越高。尤其是小
程序
,作为一个“流量吸附器”,几乎所有人都在考虑如何用小
程序
吸附甚至是核变出更多流量。当然,世界上任何一
件
事
都是有“方法论”的。我们也...
程序
= 数据结构 + 算法?真的是这样的吗?
什么?
程序
竟然等于数据结构 + 算法?这个公式是大师 Niklaus Wirth 在 1976 年提出来的,40 多年过去了,这个公式还成立吗?对于
做
Java 开发的朋友,可能会更加的赞...
Mac显示“您的系统已耗尽应用
程序
内存”时,怎么办?
MacOS基于Unix,这意味着其内存管理非常强大。但是,它并不完美,因此您可能仍然会看到一条错误消息,告诉您“您的系统已耗尽应用
程序
内存。” 这是什么意思,为什么会发生?我们将解释导致错误的原因以及解决方法。 “您的系统已耗尽应用
程序
内存”是什么意思? macOS将用于活动进程的数据存储在RAM中。如果RAM中的空间不足,macOS将开始在主引导驱动器上存储数据,并根据需要在其中与RAM之间交换数据。这称为虚拟内存。因此,引导驱动器上应始终具有相当大的可用空间-10%是一个很好的经验法则。如果启.
微信小
程序
被投诉怎么办?小妙招教给你
每个平台都有属于自己的运营规则,当然作为微信旗下的小
程序
也是一样的,不熟悉小
程序
的运营规则就很容易被封禁账号。要想知道小
程序
被投诉后应该怎么办就应该先了解它的运营规则,这样才会减少被投诉的风险。 小
程序
平台运营规范有哪些? 1、注册提交规范 在注册、提交、运营小
程序
的过程中一定要提供真实有效的相关信息,这样不仅可以帮你快速通过腾讯的审核,同时也对后期的运营有一定的帮助。 2、基本信息规范 微信小
程序
的名称、logo和简介为小
程序
帐号基本信息,需要能够准确描述小
程序
的功能和内容,能提供给用.
真实测评揭秘:开发小
程序
用原生还是选框架?
自2017-1-9微信小
程序
诞生以来,历经2年多的迭代升级,已有数百万小
程序
上线,成为继Web、iOS、Android之后,第四大主流开发技术。 与之相随,小
程序
的开发生态也在蓬勃发展,从最初的微信原生开发,到wepy、mpvue、taro、uni-app等框架依次出现,从刀耕火种演进为现代化开发,生态越来越丰富。 选择多了,问题也就来了,开发小
程序
,该用原生还是选择三方框架? 首先,微信原生开发的槽点大多集中如下: 原生开发对Node、预编译器、webpack支持不好,影响开发效率和工程...
系统维护与使用区
19,612
社区成员
74,602
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章