linux进程间切换,在Linux中的两个进程之间的上下文切换

我在写一个程序来计算终端,我写了另一个只输入并打印出来的虚拟程序。 dummy prog:在Linux中的两个进程之间的上下文切换

int main(int argc, char *argv[]) {

char text[128] = {0};

while(1){

fgets (text, 128, stdin);

printf("%s\n", text);

}

return 0;

}

在我的主程序中,我用fork-> exec运行虚拟程序。我的问题是他们中的哪一个从用户那里获得输入?在它们之间是否有上下文切换,以便一个进程一次接受输入,否则父进程将接受所有输入,除非我呼叫等待。

编辑:输入不会被共享。

然后我想调用子进程到前台我尝试使用tcsetpgrp但没有成功。我做到以下几点:

if((son = fork())==0){//son process

}else{//father

printf("the old group id is:%d\n", getpgid(son));

setpgid(son,son);

k = printf("the new group id is:%d\n",getpgid(son));

j = tcgetpgrp(0, getpgid(son))

}

j被设置为25位的setpgrp之前的一些原因和两个PGID和之后是相同的。

2013-11-15

Anton.P

+1

您应该*阅读'fork'和'exec'的手册*,并找出自己打开文件描述符(如标准输入)会发生什么情况。 –

+0

你好那里,我的问题是没有与叉执行,但与防止和允许输入的新进程 –

+1

您的问题最终是关于什么发生在标准输入。这被记录为'fork'和'exec'行为的一部分。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值