
/请解释一下/
while(((child=wait(&status))==-1)&(errno==EINTR));
这种的目的是父亲进程等待子进程结束,并回收子进程的资源,将子进程的退出状态存储在status中,同时,返回该子进程的pid。
如果wait函数返回-1表示wait函数被其它情况打断返回,并没有等待到子进程结束,而同时判断errno的值是不是EINTR(意思是让你try again),那么,让进程继续等待。因为这个错误并不是真正wait错误,而是被timeout时间等造成的,因此重新等待。而如果是其它情况,显然是wait函数调用错误,即下面的if(child==-1),需要打印错误信息。‘
//但你这句应该写错了。应该是逻辑与而不是位与 *** 作。即
while(((child=wait(&status))==-1)&&(errno==EINTR));
/请解释一下/
if(child==-1)
你对信号处理部分还需要努力。
另外介绍一本书《Linux高级程序设计 第3版》 上面讲得很清楚。
有问题我们继续交流,一起学习。
更多技术文章可以关注我的微博,名字:成都睿尔科技 。
方法/步骤
1/2 分步阅读
1 打开装置和印表机,然后点击“新增印表机”,选择本机连接的打印机还是网络共享的打印机(如截图),然后点击不要清单上的打印机,选择TCP\IP,并输入打印机IP地址。
查看剩余5张图
2/2
2 装置类型选择标准,然后点击“windowsupdate”选择打印机制造商和打印机型号,这个时候我们就可以安装驱动,识别打印机了。
2图
见参考资料
参考资料:
如今Linux不仅在服务器领域的应用取得较大进展,而且在桌面应用领域也有越来越多的人选择使用。下面就以Red Hat Linux 90为例,介绍如何与Windows XP组成双系统。
给Linux划分领地
由于Linux无法安装在Windows的分区上,所以必须在硬盘中分割出一块领地专供Linux使用,这里推荐用分区魔术师进行无损分区。为了方便讲述,这里先举一个实例来说明:装有Windows XP计算机有一个30GB的硬盘,共分三个区(C盘、D盘、和E盘),其中E盘有166GB(有约7GB可用空间)。我们的目标是将7GB的可用空间剥离出来专供Red Hat使用。
1首先在Windows XP里启动分区魔术师,从主窗口可以看到磁盘分区的详细信息。单击右侧详细窗格里的分区E以选中它。
2单击左侧任务列表里的“调整一个分区的容量”命令,即可d出一个“调整容量/移动分区”对话框。
3在该对话框的顶部有一个条状图表示分区E的使用情况,其中左侧的黑色条部分表示已用空间,右侧的绿色条部分表示可用空间。可以用鼠标直接拖曳绿色条部分对E盘容量进行调整。很显然,E盘的最小容量就是已用空间的容量(在小就要破坏原有数据了),减小的容量就成了自有空间。
4单击“确定”按钮,回到主界面,此时我们可以看到新划分出的7GB自由空间。接下来的步骤非常重要。尽管这7GB的磁盘空间已经是“自由身”,但是它还是属于Windows的扩展分区,所以要将这7GB的自由空间从Windows扩展分区里划分出去。
5单击扩展分区以选中它,如图1所示。用类似的方法将这7GB自由空间从Windows扩展DOS分区里划分出去。现在我们已经从Windows XP的领地里割出一块7GB的自由空间供Linux专用。
图1 将自由空间从扩展分区里划分出去
注意,一定要将自由空间从Windows扩展分区里划分出去,这是因为Linux的分区格式和Windows并不完全兼容。如果Red Hat所使用的磁盘空间属于Windows扩展分区,就会导致“水土不服”。很多朋友反映装上了Red Hat以后,发现Windows速度变得奇慢,就会归咎于Red Hat,其实根本原因在于分区的时候没有将自由空间从扩展分区里剥离出去。
实现Windows与Linux双重引导有多种方法:
◆ 对于具有双硬盘的用户,可以将Linux安装在第二个硬盘上(Windows自然是安装在第一个硬盘上),并且确保将GRUB(LILO)安装在第二个硬盘的主引导扇区,然后每次开机时在BIOS里指定从哪个硬盘引导即可。
◆ 最常用的方法是借助Linux的引导装载管理器GRUB(LILO),自动接管双重系统的启动选单。
◆ 可以借助Windows XP的NT引导程序ntldr、bootini来实现双重启动。这种方法的优点是今后删除Linux比较方便,而且符合我们的使用习惯;缺点是实现起来相对比较复杂,需要获取Linux系统的引导映像文件。
◆ 可以选择不安装Linux的引导装载管理器(或者不要安装在主引导扇区),但是要记住在安装过程中一定要创建Linux启动盘。今后需要时,用这张启动盘引导系统进入Linux。
这里介绍了四种双重系统的实现方案,本文将分别介绍比较常见的第二和第三种方法。
使用Linux引导管理器
Linux有GRUB和LILO两种引导管理器。从Red Hat 72版本开始,GRUB取代LILO成为了默认的启动装载程序,可见GRUB有其过人之处。相对来说,GRUB的使用和配置更加简单,功能更加强大,而且是今后的发展方向。所以此处推荐大家使用GRUB作为双重系统的引导管理器。
假设使用Red Hat Linux 90的安装光盘进行安装。首先是修改系统BIOS设置,以启用光盘开机,然后用第一张Linux安装光盘引导系统,等出现欢迎屏幕时按回车,即可进入图形化安装界面。
1选择定制安装
安装过程非常简单,一开始会提示选择安装语言(自然要选择熟悉的简体中文),然后系统会提示进行鼠标、键盘配置。一般Linux会自动检测出相关设备,无需更改。
接下来将进入安装类型选择页面,一共有五个选项,分别是个人桌面、工作站、服务器、定制和升级现存系统。这里我们选择自由度最高的“定制”安装类型,如图2所示。
图2 选择安装类型
2创建Linux分区
创建Linux分区是难点。此处选择“用Disk Druid手工分区”,在接下来的页面上选中刚刚划分出来的7GB自由空间,然后单击“新建”按钮,即可创建Linux分区。对于初学者,可以只分三个分区:
(1)引导分区
在d出的“添加分区”对话框上,在剩余空间创建引导分区,挂载点为/boot,容量可以是100MB,文件系统是ext3,如图3所示。
图3 创建引导分区
(2)交换分区
必须要创建交换分区。交换分区是一个特殊的分区,类似于Windows XP里的页面文件,它没有挂载点的概念。此处只需选择文件类型为swap,假设内存容量是128MB,则交换分区容量可以设为256MB。
(3)根分区
在d出的“添加分区”对话框上,选择挂载点为“/”,选择文件系统为ext3,可以将剩余的容量全部分配给根分区(注意应该适当留一点空间,否则系统会报错),容量大小不低于15GB。
Linux环境下没有Windows的C、D盘符概念,每一个Linux分区必须挂载到Linux目录树上才可以使用。这里有一个特殊的分区,就是根目录/,这个目录是必须的,它是Linux目录树的根。
3Linux引导管理器的配置
创建好Linux分区,接下来就是重头戏——Linux引导管理器的配置。图4就是引导装载程序配置界面。由图4可以看到,图中的引导系统列表里已经出现了两个选项,一个Windows XP(此处认作DOS),另一个自然就是Red Hat了。在这个安装向导页面,可以做以下设置:
图4 引导装载器的配置
(1)改变默认启动系统
Linux引导管理器默认引导Linux,可以在这里加以修改,例如可以勾选Windows XP(此处是DOS)前面的“默认”复选框,也可以在安装完成后,修改/boot/grub/menuist文件达到同样目的。
(2)添加别的 *** 作系统
有时候,GRUB不一定能够检测出系统里的所有 *** 作系统,这时候就需要进行人工添加。单击如图4所示页面上的“添加”按钮,即可打开一个“映像”对话框,可以在“标签”文本框输入该 *** 作系统的名称,例如“Windows 98”,在“设备”下拉列表指定该 *** 作系统的系统分区所在的位置,并确定是否选择该 *** 作系统为默认引导系统。
(3)编辑默认项目标签
可能大家早就看不惯Red Hat居然还把Windows XP看成是DOS。不过单击图4页面上的“编辑”按钮可以指定其标签,如图5所示。
图5 指定启动选单的名称
完成了这一步,Windows与Linux双重系统安装就大局已定。接下来的 *** 作比较简单,按照屏幕提示即可轻松完成。不过,千万别忘记创建一张Linux启动盘,以备不时之需。
使用ntldr实现双重引导
使用ntldr引导Windows和Linux双系统,要比GRUB麻烦得多。这是因为Windows无法识别Linux分区,所以不能检测出Red Hat Linux的存在。为了能够让ntldr乖乖“听话”,需要对其进行“手术”。
为了方便大家理解,先对Windows引导管理器的原理做一简单介绍。ntldr是由配置文件bootini提供工作参数的,该文件位于Windows XP系统分区的根目录下,具有隐藏、系统、只读属性。我们只需要将Red Hat Linux的引导记录作为一个文件备份到C盘的根目录下,并相应地在bootini文件里添加一个项目来指向它们,就可以实现双重系统了。
假设要进行Windows XP和Red Hat Linux双重启动,最好先安装Red Hat Linux,再安装Windows XP。道理很简单,如果先安装Windows XP,那么后安装的Red Hat会自作主张用它的引导管理器强占ntldr的地盘,导致无法用ntldr来引导多重系统。下面介绍如何保存Red Hat Linux 90引导扇区。
1.在Red Hat环境下备份引导扇区
安装完小红帽以后(假设安装在/dev/hda6分区)别忙着安装Windows XP,先进入小红帽,打开终端窗口,在里面键入以下命令:
dd bs=512 count=1 if=/dev/hda6 of=bootsectrh
该命令的作用就是把Red Hat Linux引导扇区保存为一个bootsectrh文件,可以将其备份到软盘上。
然后安装Windows XP(假设安装在C盘上)。安装完成以后,再把这个bootsectrh文件拷贝到C盘根目录下。编辑C盘根目录下的bootini文件(注意事先去除其系统、只读属性),在里面添加下面命令:
C:\bootsectrh="Red Hat Linux 90"
保存该文件,请别忘了将bootini、bootsectrh件设置回系统、隐藏和只读属性,以免今后误 *** 作。
需要指出的是,如果先安装Windows XP也可以,不过要记住两点:
(1)在安装Linux引导管理器时,切记不要把引导管理器安装在主引导记录上(以免覆盖Windows的引导管理器);
(2)千万记住要制作一张Linux引导盘。
后面的任务就简单了,安装完Red Hat Linux,用Linux启动盘引导系统进入Red Hat Linux,然后用同样的dd命令制作bootsectrh文件。
2.在Windows XP环境下备份Linux引导扇区
尽管在Red Hat环境下备份Linux引导扇区比较简单,但是对于大多只熟悉Windows的朋友来说,还是显得有些麻烦。所以本文将介绍如何在Windows环境下备份Linux引导扇区。这里可以分两步走,首先是找出Linux引导扇区的扇区数,然后再将该扇区保存为一个备份文件。
(1)用分区魔术师查找Linux的起始扇区
要在Windows环境下保存Linux分区的引导扇区,就必须知道该引导扇区的扇区号。借助分区魔术师,在分区魔术师80的主窗口里定位Linux的/boot分区,用鼠标右键单击该/boot分区,选择“Properties”选单项。然后在打开的“Partition Properties”对话框切换到“Partition Info”标签页,找到“First physical sector”(第一物理扇区)的扇区数,如图6所示,本例是53014500。
图6 查看引导扇区的扇区号
(2)用Dskprobe备份引导扇区
知道了Linux引导扇区号,就可以借助磁盘工具来备份。这里推荐大家使用Dskprobe,它位于Windows 2000/XP安装光盘里的\SUPPORT\TOOLS目录下的SUPPORTcab压缩包下。
先关闭分区魔术师,然后双击Dskprobeexe图标启动Dskprobe。由于启动后并未读入任何数据,所以显示的是全零的扇区信息。接下来单击程序界面上的“Drives”选单→“Pysical Drive”选单项,d出如图7所示的“Open Pysical Drive”对话框。
图7 选择合适的硬盘
可以看到该对话框里“Available Physical Drives”列表框里列出了两块磁盘,如果是单硬盘系统,将只列出PhysicalDrive0(第一块物理硬盘)。双击所需的物理硬盘,可以看到“Close Handle”和“Set Active”这两个按钮被激活,先单击“Set Active”按钮,然后再单击“OK”按钮,即可返回到主界面。
单击主界面上的“Sectors”选单→“Read”选单项,打开“Read Sectors”对话框。在“Starting Sector”文本框里输入刚才通过分区魔术师的扇区数(本例是53014500),在“Number of”文本框里输入1,然后单击“Read”按钮,则显示如图8所示的界面,这就是Linux的/boot分区的引导扇区的内容。
图8 Linux分区引导扇区内容
单击“File”选单→“Save as”选单项,指定保存位置(C盘根目录)、文件名(假设是bootsectrh)即可,然后在bootini文件里添加合适的项C:\bootsectrh="Red Hat Linux 90"即可。一切就绪以后,再重启系统。此时出现了Windows XP启动选单,可以根据需要选定进入哪个系统。
另外,虚机团上产品团购,超级便宜
1、终端下键入:touch加文件名,这样就创建了一个文件。
2、用ls命令即可查看刚刚创建的文件。
3、然后就可以随意编辑这个文件了。
扩展资料
1、Linux常用的命令:arch 显示机器的处理器架构,uname -r 显示正在使用的内核版本 。
2、lspci -tv 罗列 PCI 设备 ,lsusb -tv 显示 USB 设备 ,date 显示系统日期 。
3、shutdown -h now 关闭系统。
参考资料
Linux中国开源社区-Linux cp 命令的15个示例
你用了pthread库,在链接的时候要加上
gcc -lpthread 1c -o 1
即可
子进程(对应pid==0语句)调用pthread接口创建线程,在县城内将value赋值5,然后打印 CHILD: value=%d\n 此时value = 5
父进程 (对应 pid > 0 语句),等待子进程执行完成后(wait语句),打印PARENT: value=%d\n ,此时value = 0
对于你补充问题的回答:
线程是在子进程里创建的,它只改变了子进程的value (子进程和父进程的value处在不同的地址空间,互相没有关系,而子进程和它所创建的线程是在同一地址空间,所以线程可以改变子进程的value), 父进程没有创建线程,因此它的值不会被改变。
以上就是关于linux中C语言关于进程的创建全部的内容,包括:linux中C语言关于进程的创建、如何新增Linux驱动程序、怎么在linux上装程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)