一道操作系统进程调度的题

zg_zjw 2002-07-05 06:30:19
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>

int glob=1;

void* do_some(void* data)
{
int *num = (int*)data;
printf("Start thread\n");
printf("Num = [%d]\n", *num);
printf("End thread\n");
pthread_exit(NULL);
}

void main(void)
{
int var;
pid_t pid;
var = 1;
pthread_t p_thread;
int ret;
int a = 21;
printf("Start fork\n");
if ( (pid = fork()) < 0)
{
printf("fork error\n");
}
else if (pid == 0)
{
glob++;
var++;
ret = pthread_create(&p_thread, NULL, do_some, (void*)&a);
}
else
sleep(2);


printf("glob = [%d], var = [%d]\n", glob, var);


}

这个程序的输出结果是什么???
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fuxiao 2002-07-05
  • 打赏
  • 举报
回复
up
zengpan_panpan 2002-07-05
  • 打赏
  • 举报
回复
什么烂程序哦。运行了几遍,自己看,结果不确定。

[root@COMMON /tmp]# a.out
Start fork
Start thread
glob = [2], var = [2]
Num = [21]
End thread
glob = [1], var = [1]
[root@COMMON /tmp]# a.out
Start fork
Start thread
glob = [2], var = [2]
Num = [21]
End thread
glob = [1], var = [1]
[root@COMMON /tmp]# a.out
Start fork
Start thread
glob = [2], var = [2]
glob = [1], var = [1]
[root@COMMON /tmp]# a.out
Start fork
Start thread
glob = [2], var = [2]
Num = [21]
End thread
glob = [1], var = [1]
[root@COMMON /tmp]# a.out
Start fork
Start thread
glob = [2], var = [2]
Num = [21]
End thread
glob = [1], var = [1]
[root@COMMON /tmp]# a.out
Start fork
glob = [2], var = [2]
glob = [1], var = [1]

N3t9h0st 2002-07-05
  • 打赏
  • 举报
回复
这个代码是谁写得?
pthread和fork混用是要出错得.
aph 2002-07-05
  • 打赏
  • 举报
回复
Start fork
Start thread
Num = 21
End thread
glob = 2, var = 2

应该是吧!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧