为啥安装了open-vm-tools,复制文件到kali上还是不能粘贴
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥安装了open-vm-tools,复制文件到kali上还是不能粘贴相关的知识,希望对你有一定的参考价值。
参考技术A 复制粘贴、拖拽、窗口缩放等问题都是因为这个进程没有启动起来,你只需要在启动后在终端输入“/usr/bin/vmware-user”就可以手动启动,启动时可能会提示“**模块找不到”之类的警告,不用管他,然后你就会发现这些功能都有了为啥该行没有复制到子进程的地址空间中?
【中文标题】为啥该行没有复制到子进程的地址空间中?【英文标题】:Why the line is not copied in the address space of child process?为什么该行没有复制到子进程的地址空间中? 【发布时间】:2013-03-27 11:48:02 【问题描述】: #include<stdio.h>---->(1)
int main()
int i;
int j,K;
j = 200;
K = 300;
printf("Before forking: j = %d, K = %d\n ", j, K);---->(2)
i = fork();---->(3) /* Calling fork() */
if (i > 0) /* Parent Process */ ----->(4)
sleep(10);/* Delay the parent */
printf("After forking, parent: j = %d, K = %d\n", j, K);
----->(5)
else ----->(6) /* Child process */
j++;
K++;
printf("After forking, child: j = %d, K = %d\n", j, K);
---->(7)
o/p of the above pgm is
Before forking: j = 200, K = 300
After forking, child: j = 201, K = 301
After forking, parent: j = 200, K = 300.
&第 (6) 行到第 (7) 行构成子进程,fork() 之上的任何内容,即从第 (1) 行到第 (2) 行无论如何都被复制到子进程的地址空间。我对上述观点是否正确?那为什么line#(2)没有打印两次,一个在子进程,另一个在父进程?
【问题讨论】:
【参考方案1】:在调用fork()
之后,父母和孩子都继续。在main()
的顶部,孩子不会重新开始。
(如果您希望子进程从头开始,您应该在子进程中使用fork()
,后跟exec()
。)
【讨论】:
>那么说child得到其父母地址空间的副本是什么意思。第2行在父母地址空间中对吗? @SubiPuthalath:是的,但是那行已经被执行了。孩子在fork()
之后继续。
>好的,我明白了。所以你的意思是说只有变量的值(可以在堆中或堆栈中)只被复制到子地址空间。
所有内容都会被复制,包括变量的值、代码以及代码中执行到达的点。就您的代码而言,唯一的区别是fork()
的返回值。子代码 (2) 中存在的代码并不意味着该代码会在子代码中执行 - 执行点已经超出了它。
>感谢您的精彩解释【参考方案2】:
子进程继承父进程的上下文并在fork()之后继续执行。通常,exec() 在 child 中的 follow() 之后调用,exec() 覆盖 parent 的上下文,让 child 全新运行。
【讨论】:
>谢谢 Eva 的解释以上是关于为啥安装了open-vm-tools,复制文件到kali上还是不能粘贴的主要内容,如果未能解决你的问题,请参考以下文章