谁能教教我下面这个怎么js获取namesite的name值及该节点下的logfile下的directory的值

我就是我的作品
http://blog.sina.com.cn/u/
Tue, 24 May :35 +0800
FEEDCREATOR_VERSION
Copyright 1996 - 2009 SINA Inc. All Rights Reserved.
Wed, 25 Jul :20 +0800
[转载]史上最全的epub电子书
http://blog.sina.com.cn/s/blog_761bwjry.html
<![CDATA[&&&(1.1MB)
&&&(656.7KB)
&&&(812.7KB)
&&&(2.2MB)
&&&(1.9MB)
&&&(384.7KB)
&&&(2.2MB)
&&&(1.8MB)
&&&(1.3MB)
&&&(1.9MB)
&&&(1017.7KB)
&&&(1.9MB)
&&&(1.3MB)
&&&(290.4KB)
&&&(359.3KB)
&&&(591.1KB)
&&&(277KB)
&&&(515.4KB)
&&&(320.5KB)
&&&(447.7KB)
&&&(939.5KB)
&&&(506.4KB)
&&&(473.2KB)
&&&(241.2KB)
&&&(109.0KB)
&&&(980.9KB)
&&&(595.5KB)
&&&(1.7MB)
&&&(1.8MB)
&&&(169.4KB)
&&&(2.0MB)
&&&(2.7MB)
&&&(561.8KB)
&&&(199.2KB)
&&&(614.7KB)
&&&(2.1MB)
&&&(4.2MB)
&&&(130.1KB)
&&&(292.6KB)
&&&(1.8MB)
&&&(998.5KB)
&&&(460.4KB)
&&&(1.7MB)
&&&(728.3KB)
&&&(709.7KB)
&&&(2.31MB)
&&&(329.55KB)
&&&(308.85KB)
&&&(141.67KB)
&&&(280.61KB)
&&&(112.54KB)
&&&(227.59KB)
&&&(179.68KB)
&&&(13.19MB)
&&&(390.83KB)
&&&(4.47MB)
&&&(4.79MB)
&&&(766.14KB)
&&&(439.31KB)
&&&(10.70MB)
&&&(2.58MB)
&&&(19.31MB)
&&&(3.39MB)
&&&(454.16KB)
&&&(502.44KB)
&&&(3.49MB)
&&&(664.48KB)
&&&(1.92MB)
&&&(574.18KB)
&&&(1.86MB)
&&&(2.66MB)
&&&(1.15MB)
&&&(3.42MB)
&&&(149.10KB)
&&&(1.62MB)
&&&(467.46KB)
&&&(515.58KB)
&&&(553.23KB)
&&&(505.26KB)
&&&(277.07KB)
&&&(329.75KB)
&&&(1.50MB)
&&&(1.04MB)
&&&(21.04MB)
&&&(935.27KB)
&&&(2.04MB)
&&&(177.13KB)
&&&(123.58KB)
&&&(680.19KB)
&&&(442.29KB)
&&&(2.48MB)
&&&(5.11MB)
&&&(2.71MB)
&&&(757.29KB)
&&&(345.03KB)
&&&(246.18KB)
&&&(570.47KB)
&&&(554.74KB)
&&&(480.65KB)
&&&(175.97KB)
&&&(1.06MB)
&&&(231.47KB)
&&&(2.90MB)
&&&(2.46MB)
&&&(570.13KB)
&&&(48.35KB)
&&&(46.69KB)
&&&(723.14KB)
&&&(45.61KB)
&&&(729.66KB)
&&&(588.89KB)
&&&(211.42KB)
&&&(6.41MB)
&&&(317.04KB)
&&&(792.57KB)
&&&(516.66KB)
&&&(6.94MB)
&&&(95.55KB)
&&&(91.77KB)
&&&(341.15KB)
&&&(3.13MB)
&&&(896.76KB)
&&&(150.72KB)
&&&(942.82KB)
&&&(273.13KB)
&&&(348.19KB)
&&&(365.82KB)
&&&(204.13KB)
&&&(848.53KB)
&&&(448.41KB)
&&&(536.59KB)
&&&(1.36MB)
&&&(243.29KB)
&&&(234.07KB)
&&&(2.29MB)
&&&(1.51MB)
&&&(552.07KB)
&&&(408.25KB)
&&&(338.94KB)
&&&(279.66KB)
&&&(473.34KB)
&&&(301.64KB)
&&&(4.41MB)
&&&(467.71KB)
&&&(552.63KB)
&&&(1.76MB)
&&&(284.28KB)
&&&(664.50KB)
&&&(480.39KB)
&&&(389.40KB)
&&&(229.58KB)
&&&(565.09KB)
&&&(364.09KB)
&&&(229.23KB)
&&&(4.58MB)
&&&(337.36KB)
&&&(421.68KB)
&&&(213.76KB)
&&&(1.36MB)
&&&(327.88KB)
&&&(352.45KB)
&&&(352.63KB)
&&&(975.39KB)
&&&(157.74KB)
&&&(843.93KB)
&&&(6.09MB)
&&&(620.13KB)
&&&(623.65KB)
&&&(304.40KB)
&&&(215.54KB)
&&&(603.03KB)
&&&(1.05MB)
&&&(624.62KB)
&&&(459.46KB)
&&&(1.41MB)
&&&(488.43KB)
&&&(309.45KB)
&&&(192.16KB)
&&&(844.92KB)
&&&(405.52KB)
&&&(609.83KB)
&&&(955.58KB)
&&&(601.11KB)
&&&(436.46KB)
&&&(411.37KB)
&&&(1.25MB)
&&&(687.57KB)
&&&(441.25KB)
&&&(301.20KB)
&&&(880.54KB)
&&&(1.15MB)
&&&(13.19MB)
&&&(952.26KB)
&&&(469.55KB)
&&&(2.22MB)
&&&(52.64KB)
&&&(52.81KB)
&&&(278.75KB)
&&&(390.83KB)
&&&(311.61KB)
&&&(550.97KB)
&&&(426.10KB)
&&&(985.87KB)
&&&(422.31KB)
&&&(443.06KB)
&&&(372.03KB)
&&&(3.16MB)
&&&(521.62KB)
&&&(1.62MB)
&&&(691.08KB)
&&&(1.94MB)
&&&(2.13MB)
&&&(2.00MB)
&&&(1.18MB)
&&&(317.41KB)
&&&(2.35MB)
&&&(979.79KB)
&&&(1.81MB)
&&&(2.04MB)
&&&(263.09KB)
&&&(19.53MB)
&&&(1.94MB)
&&&(405.25KB)
&&&(371.79KB)
&&&(888.37KB)
&&&(294.55KB)
&&&(460.83KB)
&&&(398.48KB)
&&&(253.09KB)
&&&(254.36KB)
&&&(266.28KB)
&&&(532.83KB)
&&&(729.86KB)
&&&(365.40KB)
&&&(1.86MB)
&&&(1.47MB)
&&&(1.58MB)
&&&(355.53KB)
&&&(541.48KB)
&&&(188.13KB)
&&&(148.59KB)
&&&(78.40KB)
&&&(218.58KB)
&&&(204.39KB)
&&&(781.42KB)
&&&(331.24KB)
&&&(482.45KB)
&&&(676.30KB)
&&&(1.06MB)
&&&(406.57KB)
&&&(458.07KB)
&&&(419.95KB)
&&&(190.10KB)
&&&(392.03KB)
&&&(446.88KB)
&&&(449.59KB)
&&&(10.03MB)
&&&(403.21KB)
&&&(5.22MB)
&&&(5.23MB)
&&&(354.24KB)
&&&(609.20KB)
&&&(212.96KB)
&&&(139.45KB)
&&&(695.83KB)
&&&(1.20MB)
&&&(1.61MB)
&&&(577.05KB)
&&&(3.55MB)
&&&(386.52KB)
&&&(219.77KB)
&&&(2.68MB)
&&&(460.48KB)
&&&(4.56MB)
&&&(439.11KB)
&&&(514.75KB)
&&&(268.59KB)
&&&(1.79MB)
&&&(1.02MB)
&&&(976.34KB)
&&&(39.29KB)
&&&(279.35KB)
&&&(1.24MB)
&&&(592.50KB)
&&&(370.80KB)
&&&(447.97KB)
&&&(492.16KB)
&&&(518.56KB)
&&&(563.49KB)
&&&(581.84KB)
&&&(512.26KB)
&&&(351.52KB)
&&&(735.53KB)
&&&(318.90KB)
&&&(195.38KB)
&&&(290.08KB)
&&&(412.35KB)
&&&(473.55KB)
&&&(944.45KB)
&&&(428.89KB)
&&&(354.96KB)
&&&(648.99KB)
&&&(766.83KB)
&&&(342.81KB)
&&&(231.24KB)
&&&(392.83KB)
&&&(234.50KB)
&&&(141.33KB)
&&&(889.99KB)
&&&(223.14KB)
&&&(525.08KB)
&&&(800.15KB)
&&&(1.77MB)
&&&(020.02KB)
&&&(439.16KB)
&&&(439.31KB)
&&&(1.12MB)
&&&(387.80KB)
&&&(884.25KB)
&&&(236.84KB)
&&&(265.64KB)
&&&(518.65KB)
&&&(196.00KB)
&&&(8.55MB)
&&&(767.19KB)
&&&(335.32KB)
&&&(408.03KB)
&&&(5.79MB)
&&&(411.92KB)
&&&(949.71KB)
&&&(374.65KB)
&&&(1.04MB)
&&&(1.07MB)
&&&(747.78KB)
&&&(1.05MB)
&&&(1.08MB)
&&&(696.98KB)
&&&(1.09MB)
&&&(1.12MB)
&&&(252.45KB)
&&&(897.63KB)
&&&(346.31KB)
&&&(383.08KB)
&&&(10.64MB)
&&&(494.71KB)
&&&(4.68MB)
&&&(350.44KB)
&&&(3.08MB)
&&&(458.37KB)
&&&(285.57KB)
&&&(391.51KB)
&&&(371.57KB)
&&&(260.23KB)
&&&(593.61KB)
&&&(267.57KB)
&&&(1.42MB)
&&&(237.96KB)
&&&(342.10KB)
&&&(436.86KB)
&&&(580.23KB)
&&&(018.98KB)
&&&(528.36KB)
&&&(342.33KB)
&&&(196.09KB)
&&&(137.62KB)
&&&(241.47KB)
&&&(311.38KB)
&&&(4.27MB)
&&&(1.02MB)
&&&(2.76MB)
&&&(12.67MB)
&&&(14.28MB)
&&&(14.28MB)
&&&(1.18MB)
&&&(201.07KB)
&&&(597.98KB)
&&&(235.09KB)
&&&(606.50KB)
&&&(357.92KB)
&&&(747.15KB)
&&&(642.40KB)
&&&(368.30KB)
&&&(150.74KB)
&&&(1.53MB)
&&&(2.02MB)
&&&(8.46MB)
&&&(308.79KB)
&&&(560.37KB)
&&&(487.16KB)
&&&(121.39KB)
&&&(265.79KB)
&&&(551.63KB)
&&&(11.79MB)
&&&(8.95MB)
&&&(365.01KB)
&&&(397.15KB)
&&&(202.20KB)
&&&(531.66KB)
&&&(1.20MB)
&&&(249.24KB)
&&&(2.79MB)
&&&(320.16KB)
&&&(204.80KB)
&&&(416.00KB)
&&&(790.53KB)
&&&(1.23MB)
&&&(1.06MB)
&&&(852.23KB)
&&&(2.83MB)
&&&(518.25KB)
&&&(295.17KB)
&&&(1.04MB)
&&&(791.71KB)
&&&(630.12KB)
&&&(5.07MB)
&&&(487.16KB)
&&&(5.13MB)
&&&(317.21KB)
&&&(714.01KB)
&&&(316.00KB)
&&&(484.75KB)
&&&(13.03MB)
&&&(17.37MB)
&&&(7.31MB)
&&&(14.67MB)
&&&(466.67KB)
&&&(330.61KB)
&&&(329.89KB)
&&&(301.73KB)
&&&(723.92KB)
&&&(498.92KB)
&&&(008.04KB)
&&&(006.68KB)
&&&(2.10MB)
&&&(6.88MB)
&&&(764.30KB)
&&&(982.25KB)
&&&(315.59KB)
&&&(16.94MB)
&&&(4.52MB)
&&&(186.31KB)
&&&(331.27KB)
&&&(434.82KB)
&&&(345.37KB)
&&&(345.37KB)
&&&(395.07KB)
&&&(712.38KB)
&&&(290.34KB)
&&&(3.97MB)
&&&(217.84KB)
&&&(424.33KB)
&&&(525.70KB)
&&&(369.26KB)
&&&(359.84KB)
&&&(310.61KB)
&&&(382.76KB)
&&&(217.88KB)
&&&(453.12KB)
&&&(5.28MB)
&&&(447.58KB)
&&&(330.93KB)
&&&(320.65KB)
&&&(469.21KB)
&&&(244.26KB)
&&&(680.92KB)
&&&(827.10KB)
&&&(1.06MB)
&&&(1.35MB)
&&&(548.42KB)
&&&(658.32KB)
&&&(560.26KB)
&&&(368.40KB)
&&&(415.80KB)
&&&(3.57MB)
&&&(1.51MB)
&&&(1.72MB)
&&&(48.88KB)
&&&(911.51KB)
&&&(524.35KB)
&&&(378.75KB)
&&&(1.28MB)
&&&(1.90MB)
&&&(328.57KB)
&&&(443.96KB)
&&&(971.64KB)
&&&(974.15KB)
&&&(2.89MB)
&&&(479.34KB)
&&&(388.97KB)
&&&(9.49MB)
&&&(299.00KB)
&&&(480.41KB)
&&&(4.25MB)
&&&(361.13KB)
&&&(716.05KB)
&&&(641.71KB)
&&&(458.91KB)
&&&(309.48KB)
&&&(4.32MB)
&&&(2.78MB)
&&&(3.66MB)
&&&(387.17KB)
&&&(413.37KB)
&&&(490.15KB)
&&&(634.91KB)
&&&(496.17KB)
&&&(1.23MB)
&&&(1.18MB)
&&&(381.03KB)
&&&(424.20KB)
&&&(2.00MB)
&&&(462.79KB)
&&&(332.21KB)
&&&(383.65KB)
&&&(307.54KB)
&&&(7.52MB)
&&&(430.68KB)
&&&(846.50KB)
&&&(537.87KB)
&&&(019.45KB)
&&&(519.77KB)
&&&(876.44KB)
&&&(2.44MB)
&&&(575.62KB)
&&&(442.97KB)
&&&(304.70KB)
&&&(486.84KB)
&&&(1.42MB)
&&&(4.82MB)
&&&(313.18KB)
&&&(610.58KB)
&&&(229.02KB)
&&&(1.83MB)
&&&(674.79KB)
&&&(541.09KB)
&&&(1.30MB)
&&&(579.00KB)
&&&(392.36KB)
&&&(375.19KB)
&&&(438.32KB)
&&&(581.61KB)
&&&(483.38KB)
&&&(1.79MB)
&&&(516.00KB)
&&&(293.81KB)
&&&(2.24MB)
&&&(91.32KB)
&&&(352.85KB)
&&&(371.02KB)
&&&(255.92KB)
&&&(230.42KB)
&&&(308.85KB)
&&&(365.43KB)
&&&(89.65KB)
&&&(259.89KB)
&&&(272.82KB)
&&&(525.63KB)
&&&(41.71KB)
&&&(358.00KB)
&&&(463.12KB)
&&&(2.28MB)
&&&(306.69KB)
&&&(365.58KB)
&&&(326.23KB)
&&&(197.10KB)
&&&(329.43KB)
&&&(522.53KB)
&&&(1.81MB)
&&&(311.89KB)
&&&(713.52KB)
&&&(350.11KB)
&&&(485.83KB)
&&&(285.23KB)
&&&(317.75KB)
&&&(351.86KB)
&&&(404.44KB)
&&&(5.46MB)
&&&(408.93KB)
&&&(707.97KB)
&&&(1.04MB)
&&&(227.06KB)
&&&(616.51KB)
&&&(290.35KB)
&&&(1.22MB)
&&&(860.82KB)
&&&(58.29KB)
&&&(4.82MB)
&&&(4.96MB)
&&&(3.99MB)
&&&(2.81MB)
&&&(5.41MB)
&&&(363.87KB)
&&&(534.73KB)
&&&(614.44KB)
&&&(288.12KB)
&&&(365.09KB)
&&&(413.60KB)
&&&(428.12KB)
&&&(252.36KB)
&&&(436.55KB)
&&&(259.86KB)
&&&(607.49KB)
&&&(282.96KB)
&&&(5.55MB)
&&&(535.43KB)
&&&(1.41MB)
&&&(534.31KB)
&&&(458.04KB)
&&&(859.35KB)
&&&(1.57MB)
&&&(2.07MB)
&&&(454.16KB)
&&&(375.09KB)
&&&(374.58KB)
&&&(512.75KB)
&&&(389.92KB)
&&&(782.43KB)
&&&(472.41KB)
&&&(483.37KB)
&&&(3.86MB)
&&&(6.51MB)
&&&(2.96MB)
&&&(226.05KB)
&&&(1.07MB)
&&&(308.54KB)
&&&(2.39MB)
&&&(663.83KB)
&&&(793.95KB)
&&&(319.80KB)
&&&(295.35KB)
&&&(294.78KB)
&&&(1.22MB)
&&&(309.88KB)
&&&(811.75KB)
&&&(720.06KB)
&&&(1.15MB)
&&&(2.37MB)
&&&(790.54KB)
&&&(235.63KB)
&&&(2.16MB)
&&&(504.32KB)
&&&(554.62KB)
&&&(506.20KB)
&&&(255.37KB)
&&&(671.81KB)
&&&(523.56KB)
&&&(4.26MB)
&&&(1.64MB)
&&&(230.09KB)
&&&(503.98KB)
&&&(354.93KB)
&&&(751.86KB)
&&&(143.54KB)
&&&(204.72KB)
&&&(492.84KB)
&&&(473.77KB)
&&&(629.19KB)
&&&(295.16KB)
&&&(294.18KB)
&&&(755.27KB)
&&&(3.75MB)
&&&(1.46MB)
&&&(1.11MB)
&&&(597.25KB)
&&&(333.39KB)
&&&(319.40KB)
&&&(461.43KB)
&&&(795.01KB)
&&&(605.58KB)
&&&(1.71MB)
&&&(862.21KB)
&&&(521.25KB)
&&&(3.46MB)
&&&(1.76MB)
&&&(2.35MB)
&&&(1.97MB)
&&&(751.96KB)
&&&(432.02KB)
&&&(208.89KB)
&&&(576.88KB)
&&&(1.39MB)
&&&(831.97KB)
&&&(6.83MB)
&&&(962.88KB)
&&&(6.68MB)
&&&(843.43KB)
&&&(339.96KB)
&&&(388.40KB)
&&&(142.44KB)
&&&(433.98KB)
&&&(232.83KB)
&&&(641.34KB)
&&&(199.29KB)
&&&(512.55KB)
&&&(458.96KB)
&&&(246.66KB)
&&&(563.74KB)
&&&(244.07KB)
&&&(821.13KB)
&&&(132.36KB)
&&&(940.61KB)
&&&(384.82KB)
&&&(384.82KB)
&&&(304.20KB)
&&&(257.67KB)
&&&(656.25KB)
&&&(475.86KB)
&&&(62.42KB)
&&&(366.40KB)
&&&(1.31MB)
&&&(307.79KB)
&&&(217.68KB)
&&&(430.04KB)
&&&(416.98KB)
&&&(590.28KB)
&&&(48.59KB)
&&&(834.34KB)
&&&(3.38MB)
&&&(898.51KB)
&&&(387.93KB)
&&&(189.42KB)
&&&(331.57KB)
&&&(780.15KB)
&&&(1.42MB)
&&&(2.33MB)
&&&(335.66KB)
&&&(763.94KB)
&&&(760.29KB)
&&&(374.20KB)
&&&(338.72KB)
&&&(299.15KB)
&&&(513.33KB)
&&&(298.15KB)
&&&(688.03KB)
&&&(569.72KB)
&&&(569.72KB)
&&&(327.64KB)
&&&(1.42MB)
&&&(1.64MB)
&&&(1.05MB)
&&&(4.44MB)
&&&(4.65MB)
&&&(1.40MB)
&&&(1.80MB)
&&&(1.67MB)
&&&(547.45KB)
&&&(436.58KB)
&&&(156.13KB)
&&&(770.64KB)
&&&(1.23MB)
&&&(423.71KB)
&&&(303.61KB)
&&&(317.27KB)
&&&(195.21KB)
&&&(580.02KB)
&&&(912.14KB)
&&&(5.90MB)
&&&(278.28KB)
&&&(882.16KB)
&&&(1.83MB)
&&&(1.32MB)
&&&(1.52MB)
&&&(1.25MB)
&&&(268.51KB)
&&&(1.15MB)
&&&(1.41MB)
&&&(236.29KB)
&&&(440.98KB)
&&&(1.78MB)
&&&(180.83KB)
&&&(93.06KB)
&&&(3.28MB)
&&&(714.19KB)
&&&(309.37KB)
&&&(342.81KB)
&&&(1.90MB)
&&&(1.03MB)
&&&(1.22MB)
&&&(1.06MB)
&&&(220.16KB)
&&&(447.86KB)
&&&(304.35KB)
&&&(336.87KB)
&&&(427.20KB)
&&&(15.36MB)
&&&(813.21KB)
&&&(4.39MB)
&&&(2.29MB)
&&&(508.84KB)
&&&(571.69KB)
&&&(521.99KB)
&&&(4.26MB)
&&&(886.11KB)
&&&(295.19KB)
&&&(397.27KB)
&&&(265.96KB)
&&&(302.43KB)
&&&(435.90KB)
&&&(2.15MB)
&&&(13.37MB)
&&&(788.44KB)
&&&(12.80MB)
&&&(446.59KB)
&&&(775.91KB)
&&&(341.88KB)
&&&(2.75MB)
&&&(375.26KB)
&&&(484.80KB)
&&&(43.22KB)
&&&(531.60KB)
&&&(342.52KB)
&&&(263.26KB)
&&&(388.93KB)
&&&(422.64KB)
&&&(289.63KB)
&&&(544.79KB)
&&&(340.32KB)
&&&(308.30KB)
&&&(3.10MB)
&&&(511.15KB)
&&&(44.18KB)
&&&(6.11MB)
&&&(1.25MB)
&&&(155.70KB)
&&&(701.02KB)
&&&(224.94KB)
&&&(662.59KB)
&&&(390.83KB)
&&&(638.95KB)
&&&(484.37KB)
&&&(190.59KB)
&&&(5.06MB)
&&&(547.19KB)
&&&(355.06KB)
&&&(350.73KB)
&&&(350.49KB)
&&&(2.86MB)
&&&(448.28KB)
&&&(494.82KB)
&&&(385.62KB)
&&&(390.59KB)
&&&(216.99KB)
&&&(690.32KB)
&&&(594.92KB)
&&&(196.92KB)
&&&(237.60KB)
&&&(481.29KB)
&&&(1.86MB)
&&&(386.88KB)
&&&(753.46KB)
&&&(1.21MB)
&&&(897.79KB)
&&&(10.67MB)
&&&(259.92KB)
&&&(132.58KB)
&&&(364.86KB)
&&&(594.53KB)
&&&(476.72KB)
&&&(326.32KB)
&&&(288.12KB)
&&&(617.87KB)
&&&(467.59KB)
&&&(1.05MB)
&&&(1.15MB)
&&&(1.15MB)
&&&(1.02MB)
&&&(313.30KB)
&&&(391.41KB)
&&&(612.43KB)
&&&(993.14KB)
&&&(452.57KB)
&&&(495.15KB)
&&&(93.95KB)
&&&(369.50KB)
&&&(280.18KB)
&&&(383.59KB)
&&&(284.90KB)
&&&(421.44KB)
&&&(409.83KB)
&&&(2.88MB)
&&&(388.48KB)
&&&(1.18MB)
&&&(311.10KB)
&&&(693.98KB)
&&&(538.04KB)
&&&(170.79KB)
&&&(444.41KB)
&&&(258.49KB)
&&&(266.95KB)
&&&(218.17KB)
&&&(249.17KB)
&&&(254.96KB)
&&&(271.81KB)
&&&(429.83KB)
&&&(242.15KB)
&&&(328.54KB)
&&&(593.76KB)
&&&(587.56KB)
&&&(780.82KB)
&&&(423.14KB)
&&&(706.27KB)
&&&(3.71MB)
&&&(217.40KB)
&&&(262.79KB)
&&&(593.00KB)
&&&(275.42KB)
&&&(436.33KB)
&&&(1.27MB)
&&&(1.40MB)
&&&(947.30KB)
&&&(545.06KB)
&&&(248.60KB)
&&&(4.88MB)
&&&(212.13KB)
&&&(182.80KB)
&&&(366.37KB)
&&&(3.87MB)
&&&(3.33MB)
&&&(4.31MB)
&&&(8.71MB)
&&&(008.32KB)
&&&(468.19KB)
&&&(501.44KB)
&&&(342.00KB)
&&&(548.45KB)
&&&(829.29KB)
&&&(1.00MB)
&&&(4.16MB)
&&&(1.97MB)
&&&(365.99KB)
&&&(499.68KB)
&&&(525.88KB)
&&&(14.22MB)
&&&(582.07KB)
&&&(15.54MB)
&&&(14.64MB)
&&&(22.29MB)
&&&(12.86MB)
&&&(439.42KB)
&&&(264.98KB)
&&&(625.40KB)
&&&(384.66KB)
&&&(2.45MB)
&&&(1.58MB)
&&&(532.67KB)
&&&(1.80MB)
&&&(296.24KB)
&&&(257.43KB)
&&&(1.26MB)
&&&(495.87KB)
&&&(393.87KB)
&&&(555.94KB)
&&&(283.83KB)
&&&(3.86MB)
&&&(300.20KB)
&&&(530.48KB)
&&&(529.58KB)
&&&(371.57KB)
&&&(872.92KB)
&&&(574.34KB)
&&&(550.72KB)
&&&(9.30MB)
&&&(12.59MB)
&&&(496.46KB)
&&&(716.13KB)
&&&(457.66KB)
&&&(510.26KB)
&&&(221.94KB)
&&&(837.99KB)
&&&(841.41KB)
&&&(327.42KB)
&&&(434.89KB)
&&&(340.30KB)
&&&(714.55KB)
&&&(4.61MB)
&&&(375.52KB)
&&&(290.31KB)
&&&(644.75KB)
&&&(282.53KB)
&&&(2.80MB)
&&&(265.14KB)
&&&(200.18KB)
&&&(18.28MB)
&&&(400.03KB)
&&&(021.63KB)
&&&(23.29MB)
&&&(340.65KB)
&&&(276.52KB)
&&&(563.58KB)
&&&(331.91KB)
&&&(280.50KB)
&&&(432.80KB)
&&&(10.91MB)
&&&(647.83KB)
&&&(410.58KB)
&&&(270.50KB)
&&&(3.72MB)
&&&(3.41MB)
&&&(249.45KB)
&&&(2.67MB)
&&&(481.66KB)
&&&(518.12KB)
&&&(236.63KB)
&&&(383.22KB)
&&&(341.66KB)
&&&(896.04KB)
&&&(150.51KB)
&&&(723.80KB)
&&&(628.54KB)
&&&(993.93KB)
&&&(547.39KB)
&&&(125.08KB)
&&&(314.83KB)
&&&(968.25KB)
&&&(1.13MB)
&&&(772.82KB)
&&&(591.56KB)
&&&(205.67KB)
&&&(789.29KB)
&&&(670.55KB)
&&&(7.22MB)
&&&(309.71KB)
&&&(529.78KB)
&&&(311.88KB)
&&&(518.33KB)
&&&(793.73KB)
&&&(426.73KB)
&&&(600.63KB)
&&&(415.13KB)
&&&(1.63MB)
&&&(328.10KB)
&&&(346.20KB)
&&&(689.43KB)
&&&(607.35KB)
&&&(1.79MB)
&&&(10.84MB)
&&&(000.54KB)
&&&(815.67KB)
&&&(7.51MB)
&&&(553.23KB)
&&&(201.13KB)
&&&(491.44KB)
&&&(72.66KB)
&&&(2.58MB)
&&&(308.80KB)
&&&(390.08KB)
&&&(352.19KB)
&&&(425.65KB)
&&&(649.01KB)
&&&(704.17KB)
&&&(481.80KB)
&&&(438.01KB)
&&&(903.15KB)
&&&(432.24KB)
&&&(339.23KB)
&&&(789.37KB)
&&&(484.91KB)
&&&(573.29KB)
&&&(573.57KB)
&&&(387.42KB)
&&&(1.83MB)
&&&(240.19KB)
&&&(356.63KB)
&&&(484.62KB)
&&&(1.76MB)
&&&(628.75KB)
&&&(727.30KB)
&&&(1.43MB)
&&&(652.09KB)
&&&(606.14KB)
&&&(4.02MB)
&&&(399.47KB)
&&&(401.58KB)
&&&(660.02KB)
&&&(589.90KB)
&&&(525.62KB)
&&&(308.63KB)
&&&(342.25KB)
&&&(620.55KB)
&&&(396.29KB)
&&&(434.39KB)
&&&(601.89KB)
&&&(335.89KB)
&&&(170.71KB)
&&&(2.20MB)
&&&(812.96KB)
&&&(481.95KB)
&&&(610.97KB)
&&&(908.58KB)
&&&(442.82KB)
&&&(3.86MB)
&&&(330.23KB)
&&&(415.49KB)
&&&(1.96MB)
&&&(270.96KB)
&&&(1.19MB)
&&&(707.95KB)
&&&(513.86KB)
&&&(1.56MB)
&&&(495.08KB)
&&&(367.62KB)
&&&(5.12MB)
&&&(1.13MB)
&&&(590.84KB)
&&&(1.89MB)
&&&(292.44KB)
&&&(742.50KB)
&&&(2.23MB)
&&&(572.15KB)
&&&(523.67KB)
&&&(593.57KB)
&&&(519.60KB)
&&&(442.92KB)
&&&(8.02MB)
&&&(3.31MB)
&&&(282.70KB)
&&&(124.71KB)
&&&(391.96KB)
&&&(360.19KB)
&&&(302.27KB)
&&&(342.36KB)
&&&(7.48MB)
&&&(11.41MB)
&&&(764.47KB)
&&&(1.21MB)
&&&(617.70KB)
&&&(2.37MB)
&&&(1.88MB)
&&&(1.10MB)
&&&(2.50MB)
&&&(2.13MB)
&&&(390.42KB)
&&&(344.71KB)
&&&(454.95KB)
&&&(619.90KB)
&&&(467.42KB)
&&&(378.22KB)
&&&(11.69MB)
&&&(7.79MB)
&&&(215.75KB)
&&&(313.57KB)
&&&(1.06MB)
&&&(337.13KB)
&&&(385.79KB)
&&&(503.71KB)
&&&(749.25KB)
&&&(666.26KB)
&&&(705.55KB)
&&&(216.83KB)
&&&(181.85KB)
&&&(1.43MB)
&&&(465.95KB)
&&&(4.97MB)
&&&(1.02MB)
&&&(470.60KB)
&&&(410.29KB)
&&&(412.90KB)
&&&(316.05KB)
&&&(361.45KB)
&&&(1.32MB)
&&&(1.93MB)
&&&(1.60MB)
&&&(1.60MB)
&&&(716.70KB)
&&&(821.04KB)
&&&(682.03KB)
&&&(542.95KB)
&&&(585.68KB)
&&&(391.33KB)
&&&(753.59KB)
&&&(5.53MB)
&&&(296.06KB)
&&&(301.25KB)
&&&(354.67KB)
&&&(202.32KB)
&&&(245.05KB)
&&&(453.18KB)
&&&(748.84KB)
&&&(331.50KB)
&&&(581.88KB)
&&&(577.50KB)
&&&(277.14KB)
&&&(244.83KB)
&&&(386.23KB)
&&&(2.03MB)
&&&(620.47KB)
&&&(365.79KB)
&&&(3.71MB)
&&&(2.85MB)
&&&(781.84KB)
&&&(6.14MB)
&&&(3.30MB)
&&&(2.08MB)
&&&(6.11MB)
&&&(4.59MB)
&&&(914.73KB)
&&&(3.69MB)
&&&(240.12KB)
&&&(338.57KB)
&&&(318.52KB)
&&&(421.79KB)
&&&(546.27KB)
&&&(389.57KB)
&&&(727.71KB)
&&&(297.61KB)
&&&(303.93KB)
&&&(322.70KB)
&&&(906.38KB)
&&&(306.86KB)
&&&(608.59KB)
&&&(1.95MB)
&&&(239.53KB)
&&&(414.33KB)
&&&(284.24KB)
&&&(390.18KB)
&&&(1.74MB)
&&&(337.84KB)
&&&(565.86KB)
&&&(298.31KB)
&&&(9.39MB)
&&&(221.27KB)
&&&(425.90KB)
&&&(599.96KB)
&&&(192.14KB)
&&&(1.71MB)
&&&(387.18KB)
&&&(833.24KB)
&&&(828.00KB)
&&&(213.37KB)
&&&(222.75KB)
&&&(425.57KB)
&&&(430.00KB)
&&&(247.55KB)
&&&(390.36KB)
&&&(580.66KB)
&&&(1.33MB)
&&&(515.34KB)
&&&(345.41KB)
&&&(383.90KB)
&&&(382.46KB)
&&&(804.15KB)
&&&(1.29MB)
&&&(324.36KB)
&&&(1.45MB)
&&&(417.64KB)
&&&(450.24KB)
&&&(555.63KB)
&&&(411.47KB)
&&&(451.82KB)
&&&(460.88KB)
&&&(1.29MB)
&&&(233.05KB)
&&&(332.89KB)
&&&(311.13KB)
&&&(557.62KB)
&&&(1.28MB)
&&&(1.28MB)
&&&(226.25KB)
&&&(427.95KB)
&&&(514.17KB)
&&&(448.89KB)
&&&(546.50KB)
&&&(247.29KB)
&&&(391.61KB)
&&&(290.82KB)
&&&(391.02KB)
&&&(1.28MB)
&&&(391.27KB)
&&&(515.23KB)
&&&(377.91KB)
&&&(394.11KB)
&&&(586.54KB)
&&&(310.04KB)
&&&(347.25KB)
&&&(527.96KB)
&&&(450.44KB)
&&&(730.85KB)
&&&(417.56KB)
&&&(1.53MB)
&&&(4.18MB)
&&&(307.38KB)
&&&(687.62KB)
&&&(5.19MB)
&&&(291.56KB)
&&&(279.74KB)
&&&(423.37KB)
&&&(310.78KB)
&&&(1.53MB)
&&&(317.88KB)
&&&(330.07KB)
&&&(239.17KB)
&&&(236.10KB)
&&&(618.92KB)
&&&(654.65KB)
&&&(556.11KB)
&&&(206.79KB)
&&&(9.37MB)
&&&(412.87KB)
&&&(1.02MB)
&&&(438.20KB)
&&&(386.81KB)
&&&(397.17KB)
&&&(851.02KB)
&&&(279.72KB)
&&&(824.93KB)
&&&(237.73KB)
&&&(246.27KB)
&&&(503.09KB)
&&&(1.34MB)
&&&(1.76MB)
&&&(2.29MB)
&&&(1.39MB)
&&&(465.40KB)
&&&(721.56KB)
&&&(726.52KB)
&&&(3.38MB)
&&&(753.83KB)
&&&(951.48KB)
&&&(283.73KB)
&&&(315.18KB)
&&&(284.94KB)
&&&(595.30KB)
&&&(369.05KB)
&&&(008.06KB)
&&&(471.95KB)
&&&(136.55KB)
&&&(209.14KB)
&&&(329.49KB)
&&&(516.02KB)
&&&(501.50KB)
&&&(2.65MB)
&&&(1.40MB)
&&&(1.93MB)
&&&(337.45KB)
&&&(441.05KB)
&&&(1.06MB)
&&&(4.90MB)
&&&(11.97MB)
&&&(11.98MB)
&&&(391.82KB)
&&&(370.48KB)
&&&(353.70KB)
&&&(415.36KB)
&&&(145.22KB)
&&&(426.94KB)
&&&(413.13KB)
&&&(568.48KB)
&&&(246.52KB)
&&&(425.40KB)
&&&(385.55KB)
&&&(279.99KB)
&&&(265.28KB)
&&&(210.57KB)
&&&(467.48KB)
&&&(104.66KB)
&&&(177.32KB)
&&&(177.13KB)
&&&(249.88KB)
&&&(4.46MB)
&&&(5.28MB)
&&&(859.96KB)
&&&(13.12MB)
&&&(211.93KB)
&&&(562.46KB)
&&&(195.56KB)
&&&(14.03MB)
&&&(470.29KB)
&&&(413.41KB)
&&&(346.29KB)
&&&(813.90KB)
&&&(2.57MB)
&&&(410.01KB)
&&&(1.34MB)
&&&(607.99KB)
&&&(339.65KB)
&&&(1.15MB)
&&&(477.61KB)
&&&(512.83KB)
&&&(573.96KB)
&&&(255.43KB)
&&&(532.54KB)
&&&(458.63KB)
&&&(243.50KB)
&&&(546.41KB)
&&&(206.70KB)
&&&(1.26MB)
&&&(375.24KB)
&&&(367.06KB)
&&&(11.15MB)
&&&(4.88MB)
&&&(9.64MB)
&&&(6.47MB)
&&&(10.18MB)
&&&(4.73MB)
&&&(7.76MB)
&&&(12.34MB)
&&&(11.63MB)
&&&(9.28MB)
&&&(9.47MB)
&&&(8.15MB)
&&&(8.05MB)
&&&(7.38MB)
&&&(7.09MB)
&&&(13.57MB)
&&&(4.79MB)
&&&(28.36MB)
&&&(234.87KB)
&&&(587.86KB)
&&&(844.16KB)
&&&(990.01KB)
&&&(364.21KB)
&&&(678.32KB)
&&&(4.00MB)
&&&(1.81MB)
&&&(424.55KB)
&&&(181.54KB)
&&&(257.71KB)
&&&(517.66KB)
&&&(422.14KB)
&&&(576.16KB)
&&&(739.82KB)
&&&(2.91MB)
&&&(208.58KB)
&&&(2.78MB)
&&&(608.23KB)
&&&(685.46KB)
&&&(1.21MB)
&&&(777.32KB)
&&&(1.15MB)
&&&(877.63KB)
&&&(380.56KB)
&&&(397.68KB)
&&&(2.69MB)
&&&(537.78KB)
&&&(3.53MB)
&&&(26.73MB)
&&&(336.84KB)
&&&(356.22KB)
&&&(255.23KB)
&&&(323.22KB)
&&&(255.70KB)
&&&(1.78MB)
&&&(5.22MB)
&&&(199.50KB)
&&&(2.53MB)
&&&(5.87MB)
&&&(400.52KB)
&&&(1.14MB)
&&&(331.14KB)
&&&(3.40MB)
&&&(363.75KB)
&&&(875.03KB)
&&&(701.36KB)
&&&(1.74MB)
&&&(361.09KB)
&&&(2.34MB)
&&&(480.78KB)
&&&(3.25MB)
&&&(16.11MB)
&&&(17.12MB)
&&&(671.94KB)
&&&(1.64MB)
&&&(1.20MB)
&&&(234.31KB)
&&&(867.48KB)
&&&(549.50KB)
&&&(246.13KB)
&&&(486.03KB)
&&&(766.05KB)
&&&(790.79KB)
&&&(461.27KB)
&&&(1.20MB)
&&&(3.23MB)
&&&(365.41KB)
&&&(734.88KB)
&&&(860.09KB)
&&&(473.74KB)
&&&(782.93KB)
&&&(2.88MB)
&&&(3.02MB)
&&&(588.54KB)
&&&(294.05KB)
&&&(2.05MB)
&&&(345.87KB)
&&&(577.42KB)
&&&(354.54KB)
&&&(308.07KB)
&&&(354.31KB)
&&&(342.38KB)
&&&(323.26KB)
&&&(659.44KB)
&&&(851.76KB)
&&&(339.61KB)
&&&(442.84KB)
&&&(304.08KB)
&&&(330.27KB)
&&&(277.63KB)
&&&(337.53KB)
&&&(493.45KB)
&&&(1.07MB)
&&&(3.40MB)
&&&(807.46KB)
&&&(828.49KB)
&&&(390.70KB)
&&&(530.06KB)
&&&(3.56MB)
&&&(678.46KB)
&&&(955.65KB)
&&&(297.03KB)
&&&(300.70KB)
&&&(221.72KB)
&&&(901.60KB)
&&&(297.06KB)
&&&(299.07KB)
&&&(265.15KB)
&&&(5.89MB)
&&&(5.89MB)
&&&(601.28KB)
&&&(518.89KB)
&&&(798.31KB)
&&&(347.34KB)
&&&(822.84KB)
&&&(238.05KB)
&&&(2.99MB)
&&&(3.66MB)
&&&(5.23MB)
&&&(2.99MB)
&&&(348.90KB)
&&&(345.63KB)
&&&(346.44KB)
&&&(753.65KB)
&&&(364.09KB)
&&&(436.84KB)
&&&(11.36MB)
&&&(249.40KB)
&&&(58.26KB)
&&&(178.23KB)
&&&(445.83KB)
&&&(370.55KB)
&&&(828.55KB)
&&&(272.91KB)
&&&(63.00KB)
&&&(63.13KB)
&&&(553.33KB)
&&&(9.62MB)
&&&(18.06MB)
&&&(946.47KB)
&&&(976.49KB)
&&&(495.89KB)
&&&(1.47MB)
&&&(515.46KB)
&&&(501.18KB)
&&&(672.17KB)
&&&(603.98KB)
&&&(123.50KB)
&&&(256.09KB)
&&&(21.98MB)
&&&(658.75KB)
&&&(899.16KB)
&&&(1.13MB)
&&&(1.13MB)
&&&(1.39MB)
&&&(834.84KB)
&&&(407.17KB)
&&&(460.42KB)
&&&(3.28MB)
&&&(716.41KB)
&&&(548.53KB)
&&&(2.81MB)
&&&(295.26KB)
&&&(294.12KB)
&&&(338.18KB)
&&&(852.17KB)
&&&(1.99MB)
&&&(1.21MB)
&&&(1.21MB)
&&&(1.85MB)
&&&(2.97MB)
&&&(2.49MB)
&&&(670.23KB)
&&&(318.16KB)
&&&(1.11MB)
&&&(372.37KB)
&&&(1.24MB)
&&&(445.58KB)
&&&(1.87MB)
&&&(13.24MB)
&&&(17.23MB)
&&&(757.68KB)
&&&(1.47MB)
&&&(321.47KB)
&&&(424.74KB)
&&&(283.66KB)
&&&(530.83KB)
&&&(1.13MB)&]]>
http://blog.sina.com.cn/s/blog_761bwjry.html#comment
Tue, 24 May :35 +0800
http://blog.sina.com.cn/s/blog_761bwjry.html
C语言中EOF与Ctrl+Z
http://blog.sina.com.cn/s/blog_761bj.html
希望本文可以对初学C的朋友提供一点帮助,也希望能和其他朋友进行交流。其中理解不对的地方若能得到指正和建议,本人将不胜感激
大师级经典的著作,要字斟句酌的去读,去理解。以前在看K&R的The C Programming
Language(SecondEdition)
第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多琐碎的知识点长时间过后就会淡忘的,只有写下来才是最好的方法。
其实,getchar()最典型的程序也就几行代码而已。本人所用的环境是DebianGNU/Linux,在其他系统下也一样。
一、getchar的两点总结:1.getchar是以行为单位进行存取的。
当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z,
Unix/Linux下为组合键Ctrl+D),那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论)时,
getchar才会停止执行,整个程序将会往下执行。譬如下面程序段:
while((c = getchar()) != EOF){
putchar(c);
执行程序,输入:abc,然后回车。则程序就会去执行puchar(c),然后输出abc,这个地方不要忘了,系统输出的还有一个回车。然后可以继续输入,再次遇到换行符的时候,程序又会把那一行的输入的字符输出在终端上。
对于getchar,肯定很多初学的朋友会问,getchar不是以字符为单位读取的吗?那么,既然我输入了第一个字符a,肯定满足while循环(c
= getchar()) !=
EOF的条件阿,那么应该执行putchar(c)在终端输出一个字符a。不错,我在用getchar的时候也是一直这么想的,但是程序就偏偏不着样执
行,而是必需读到一个换行符或者文件结束符EOF才进行一次输出。
对这个问题的一个解释是,在大师编写C的时候,当时并没有所谓终端输入的概念,所有的输入实际上都是按照文件进行读取的,文件中一般都是以行为单位的。因
此,只有遇到换行符,那么程序会认为输入结束,然后采取执行程序的其他部分。同时,输入是按照文件的方式存取的,那么要结束一个文件的输入就需用到EOF
(Enf Of File). 这也就是为什么getchar结束输入退出时要用EOF的原因。
2.getchar()的返回值一般情况下是字符,但也可能是负值,即返回EOF。
这里要强调的一点就是,getchar函数通常返回终端所输入的字符,这些字符系统中对应的ASCII值都是非负的。因此,很多时候,我们会写这样的两行代码:
c = getchar();
这样就很有可能出现问题。因为getchar函数除了返回终端输入的字符外,在遇到Ctrl+D(Linux下)即文件结束符EOF时,getchar
()的返回EOF,这个EOF在函数库里一般定义为-1。因此,在这种情况下,getchar函数返回一个负值,把一个负值赋给一个char型的变量是不
正确的。为了能够让所定义的变量能够包含getchar函数返回的所有可能的值,正确的定义方法如下(K&R
C中特别提到了这个问题):
c = getchar();
二、EOF的两点总结(主要指普通终端中的EOF)1.EOF作为文件结束符时的情况:
EOF虽然是文件结束符,但并不是在任何情况下输入Ctrl+D(Windows下Ctrl+Z)都能够实现文件结束的功能,只有在下列的条件下,才作为文件结束符。
(1)遇到getcahr函数执行时,要输入第一个字符时就直接输入Ctrl+D,就可以跳出getchar(),去执行程序的其他部分;
(2)在前面输入的字符为换行符时,接着输入Ctrl+D;
(3)在前面有字符输入且不为换行符时,要连着输入两次Ctrl+D,这时第二次输入的Ctrl+D起到文件结束符的功能,至于第一次的Ctrl+D的作用将在下面介绍。
其实,这三种情况都可以总结为只有在getchar()提示新的一次输入时,直接输入Ctrl+D才相当于文件结束符。
2.EOF作为行结束符时的情况,这时候输入Ctrl+D并不能结束getchar(),而只能引发getchar()提示下一轮的输入。
这种情况主要是在进行getchar()新的一行输入时,当输入了若干字符(不能包含换行符)之后,直接输入Ctrl+D,此时的Ctrl+D并不是文件
结束符,而只是相当于换行符的功能,即结束当前的输入。以上面的代码段为例,如果执行时输入abc,然后Ctrl+D,程序输出结果为:
注意:第一组abc为从终端输入的,然后输入Ctrl+D,就输出第二组abc,同时光标停在第二组字符的c后面,然后可以进行新一次的输入。这时如果再次输入Ctrl+D,则起到了文件结束符的作用,结束getchar()。
如果输入abc之后,然后回车,输入换行符的话,则终端显示为:
abc //第一行,带回车
abc //第二行
其中第一行为终端输入,第二行为终端输出,光标停在了第三行处,等待新一次的终端输入。
从这里也可以看出Ctrl+D和换行符分别作为行结束符时,输出的不同结果。
EOF的作用也可以总结为:当终端有字符输入时,Ctrl+D产生的EOF相当于结束本行的输入,将引起getchar()新一轮的输入;当终端没有字符
输入或者可以说当getchar()读取新的一次输入时,输入Ctrl+D,此时产生的EOF相当于文件结束符,程序将结束getchar()的执行。
【补充】本文第二部分中关于EOF的总结部分,适用于终端驱动处于一次一行的模式下。也就是虽然getchar()和putchar()确实是按照每次一个字符
进行的。但是终端驱动处于一次一行的模式,它的输入只有到“\n”或者EOF时才结束,因此,终端上得到的输出也都是按行的。
如果要实现终端在读一个字符就结束输入的话,下面的程序是一种实现的方法(参考《C专家编程》,略有改动)
&main(void)
&&& system("stty
getchar();
putchar();
&&& system("stty
&&& return
编译运行该程序,则当如入一个字符时,直接出处一个字符,然后程序结束。
由此可见,由于终端驱动的模式不同,造成了getchar()输入结束的条件不一样。普通模式下需要回车或者EOF,而在一次一个字符的模式下,则输入一个字符之后就结束了。&]]>
http://blog.sina.com.cn/s/blog_761bj.html#comment
Sat, 31 Jan :46 +0800
http://blog.sina.com.cn/s/blog_761bj.html
linux中svn命令大全
http://blog.sina.com.cn/s/blog_761bvcvd.html
<![CDATA[1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock]
PATH(如果选择了保持锁,就使用&no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
5、更新到某个版本
svn update -r m path
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update
test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn
resolved,最后再提交commit)
简写:svn up
6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn
revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test
或者直接svn delete test.php 然后再svn ci -m ‘delete test
file‘,推荐使用这种
简写:svn (del, remove, rm)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205
test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改 svn revert: 恢复原始未改变的工作副本文件
(恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch &relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename & filename (PREV
是上一版本,也可以写具体版本号,这样输出结果是可以提交的)&]]>
http://blog.sina.com.cn/s/blog_761bvcvd.html#comment
Thu, 29 Jan :52 +0800
http://blog.sina.com.cn/s/blog_761bvcvd.html
linux&命令之chmod
http://blog.sina.com.cn/s/blog_761bvco8.html
<![CDATA[。命令详细情况如下。
1.&命令格式:
2.&命令功能:
3.&命令参数:
数字与字符对应关系如下:
4.&使用实例:实例增加文件所有用户组可执行权限
[root@localhost&test]#&ls&-al&log2012.log&
-rw-r--r--&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#&chmod&a+x&log2012.log&
[root@localhost&test]#&ls&-al&log2012.log&
-rwxr-xr-x&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#
说明:;;。
实同时修改不同用户权限
[root@localhost&test]#&ls&-al&log2012.log&
-rwxr-xr-x&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#&chmod&ug+w,o-x&log2012.log&
[root@localhost&test]#&ls&-al&log2012.log&
-rwxrwxr--&1&root&root&-13&06:03&log2012.log
实例3:删除文件权限
[root@localhost&test]#&ls&-al&log2012.log&
-rwxrwxr--&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#&chmod&a-x&log2012.log&
[root@localhost&test]#&ls&-al&log2012.log&
-rw-rw-r--&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#&ls&-al&log2012.log&
-rw-rw-r--&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#&chmod&u=x&log2012.log&
[root@localhost&test]#&ls&-al&log2012.log&
---xrw-r--&1&root&root&-13&06:03&log2012.log
[root@localhost&test]#&cd&test4
[root@localhost&test4]#&ls&-al
总计&312drwxrwxr-x&2&root&root&&&&05:50&.
drwxr-xr-x&5&root&root&&&&06:58&..
-rw-r--r--&1&root&root&-12&22:54&log2012.log
-rw-r--r--&1&root&root&&&&&61&11-12&22:54&log2013.log
-rw-r--r--&1&root&root&&&&&&0&11-12&22:54&log2014.log
[root@localhost&test4]#&cd&..
[root@localhost&test]#&chmod&-R&u+x&test4
[root@localhost&test]#&cd&test4
[root@localhost&test4]#&ls&-al
总计&312drwxrwxr-x&2&root&root&&&&05:50&.
drwxr-xr-x&5&root&root&&&&06:58&..
-rwxr--r--&1&root&root&-12&22:54&log2012.log
-rwxr--r--&1&root&root&&&&&61&11-12&22:54&log2013.log
-rwxr--r--&1&root&root&&&&&&0&11-12&22:54&log2014.log
其他一些实例:
http://blog.sina.com.cn/s/blog_761bvco8.html#comment
Mon, 26 Jan :57 +0800
http://blog.sina.com.cn/s/blog_761bvco8.html
linux&grep
http://blog.sina.com.cn/s/blog_761bvchh.html
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global
Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep [options]
3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\&:从匹配正则表达 式的行开始。
\&:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。&]]>
http://blog.sina.com.cn/s/blog_761bvchh.html#comment
Fri, 23 Jan :03 +0800
http://blog.sina.com.cn/s/blog_761bvchh.html
centos6&各个版本的不同
http://blog.sina.com.cn/s/blog_761bvcfi.html
<![CDATA[可选的类型说明如下:&#8203;
Desktop&:基本的桌面系统,包括常用的桌面软件,如文档查看工具。Minimal&Desktop&:基本的桌面系统,包含
的软件更少。&#8203;&#8203;Minimal&:基本的系统,不含有任何可选的软件包。&#8203;Basic&Server&:安装的基本系统的平台支持,不包含桌面。&Database&Server&:基本系统平台,加上mysql和PostgreSQL数据库,无桌面。Web&Server&:基本系统平台,加上
PHP,Web&server&,还有mysql和PostgreSQL数据库的客户端,无桌面。Virtual&Host&:基本系统加虚拟化平台。&Software&Development&Workstation&:包含的软件包较多,基本系统,虚拟化平台,桌面环境,开发工具。(1440个安装包&]]>
http://blog.sina.com.cn/s/blog_761bvcfi.html#comment
Thu, 22 Jan :26 +0800
http://blog.sina.com.cn/s/blog_761bvcfi.html
[转载]R的日记-R语言常用命令(一)
http://blog.sina.com.cn/s/blog_761bvbw2.html
<![CDATA[以下是R编程常用的一些命令(不包括统计分析与作图)。
##################################
##################################
数学运算:
+,-,*,/,^,%%。(加,减,乘,除,乘方,求余。)
比较运算:
&,&,&=,&=,==,!=。(大于,小于,大于等于,小于等于,等于,不等于。)
逻辑运算:
&,|,!。(与,或,非。)
##################################
#初始基本操作
##################################
#获取工作目录。
& setwd("F:/R/myfun")
#设定工作目录为F:/R/myfun。
& help(com)
#获得对命令com的说明。
& example(com)
#命令com的使用实例。
& args(com)
#查看命令com的变量格式。
& library()
#列出已安装的包。
& library(AER) &#或用
& require(AER)
#载入包AER。
& library(help = AER)
#获取包AER的信息。
& detach(package:AER)
#去除载入的包AER。
& search()
#列出已载入的包。
#列出已载入的包中的所有数据集。
& data(package = .packages(all.available =
#列出已安装的包中的所有数据集。
& try(data(package = "AER") )
#列出包AER里的所有数据集。
& data(Affairs, "BankWages")
#读入数据集Affairs和BankWages(这些数据集需已在data()中列出)。
& help(Affairs)
#获取数据集Affairs的信息。
& attach(Affairs)
#贴上数据集Affairs,其作用是可以直接对数据集里的变量进行操作。
& detach(Affairs)
#上述操作的逆操作。
##################################
#对一般对象的基本操作
##################################
&objects()
#列出所有对象。
#查看对象x的模式:空,数值,字符,逻辑,复数,列表,函数(NULL,numeric,character,logical,complex,list,function)。
& class(x)
#查看对象x的类型:除了mode里列出的几种类型外,还有整数,矩阵,因子,阵列,数据框,时间序列(integer,matrix,factor,array,data
frame,ts)等其他类型。mode主要用于区别数据存放的方式,而class是一种更细微的分类方式,比如矩阵,就是一种更“有序”的数据存放方式。此命令比mode常用。
& as.matrix(x)
#把对象x转为矩阵型。
& as.numeric(x)
#把对象x转为数值型。
#查看对象x的结构。str是structure的缩写。
#移除对象x。
& rm(list=ls(all=TRUE))
#移除所有对象。
##################################
#与向量有关的基本操作
##################################
& x = c(1,2,4)
#生成元素依次为1,2,4的向量x,这里的c是concatenate的意思。注意其类型是数值,不是矩阵。
& x = c("a","b","cd")
#生成元素依次为"a","b","cd"的字符向量x。
& x = paste("a","b","cd")
#生成"a b cd"的字符x。
#向量x的第a到b个元素。
#剔除向量x第i个元素所得的向量。
& length(x)
#向量x的长度。
& x = seq(a, b, length = n)
#生成以一个n维数值型向量x,第一个元素为a,最后一个元素为b,中间元素依次等距递增。(假设a&b)
& x = seq(a, b, c)
#生成一个数值型向量x,第一个元素为a,其后元素依次加c,直到最后一个元素加c大于b。(假设a&b)
& x = seq(a)
#从1开始生成一个递增或递减数值型向量x,最后一个元素绝对值为小于等于|a|的最大整数。
#生成一个从a递增(减)到b的数值型向量x。(a和b都是整数)
& x = rep(v, n)
#对向量v进行n次复制生成新的向量x。
& x = rep(v, each = n)
#依次对向量v的每个元素复制n此生成新的向量x。
& x = round(v)
#生成一个向量x,其中每个元素是v对应元素的最近整数。
& order(x)
#获得向量x第i大元素在向量中的位置。
#获得向量x每个元素大小位置。
#对向量x从小到大进行排序。降序:sort(x, decreasing = TRUE)。
& tapply(x,f,g)
#根据因子f对向量x分类执行函数g。
& split(x,f)
#向量x按因子f分类。
#返回向量x的差分向量。
& cumsum(x)
#返回向量x的累加向量。
##################################
#与矩阵有关的基本操作
##################################
& M = matrix(0,c(m,n))
#生成m行n列的0矩阵。
& M = rbind(X,Y)
#按行合并矩阵X和Y形成新矩阵M。(X和Y列数需相同)
& M = cbind(X,Y)
#按列合并矩阵X和Y形成新矩阵M。(X和Y行数需相同)
& colnames(M)
#矩阵M的列名。
& rownames(M)
#矩阵M的行名。
#矩阵M的行数。
#矩阵M的列数。
#矩阵M的对角线元素形成的向量
& M = diag(x)
#生成以向量x为对角线元素,其他位置元素为0的矩阵M。
#矩阵M的维度。
#矩阵M第i行。(数值型)
& M[i,,drop = FALSE]
#矩阵M第i行。(矩阵型)
& M = M[-i,]
#删除矩阵M第i行。
#矩阵M第j列。
#矩阵M第i行j列元素。
#矩阵M的转置。若M为数值型向量,则t(M)为矩阵型行向量。
#矩阵X乘矩阵Y。若Y是数值型的向量,R会自动判断其为行向量还是列向量。若X与Y为维度匹配的数值型向量,则返回的是矩阵型向量的内积。
#数值型向量x与y的外积(矩阵型)。
#矩阵X与矩阵Y的Hadamard乘积。加、减、除、求余的规则和乘相同,即相同位置的元素进行运算。
& eigen(M)$val
& eigen(M)$vec
#求矩阵M的特征值和特征向量。
& solve(M)
#矩阵M求逆。
& solve(A,b)
#求解线性方程Ax=b。
& apply(M, dimcode, f, fargs)
#对矩阵M的行(dimcode=1)或列(dimcode=2)依次进行函数f操作,f的变量(arguments)方正fargs里。
##################################
#与列表有关的基本操作
##################################
& L = list(a = , b = , c = ,...)
#建立列表L。
#返回列表L里的对象a。
& L$a = NULL
#去除列表L里的对象a。
& names(L)
#列出列表L里的对象名。
& unname(L)
#去掉列表L里的对象名。
& lapply(...)
#list apply。功能与apply类似(参考上面的apply),用于列表型数据。
& sapply(...)
#simplified apply。功能与lapply类似,区别在于函数结果的类型不是列表(list)。
##################################
#与数据框有关的基本操作
##################################
#数据框是一种特殊的列表,所以对列表适用的函数往往对数据框也适用。此外,数据框也有矩阵型数据的特征,所以一些适用于矩阵型数据的函数,不如rbind,cbind,apply等也可以作用在数据框上。
& Data = data.frame(...)
#创建数据框Data。
& fix(Data)
#编辑数据框Data。
& head(Data)
#显示数据框Data的前几行。
& attribute(Data)
#列出数据框Data的组成部分。
& names(Data)
#显示数据框Data的变量名。
& row.names(Data)
#显示数据框Data的行名。
& Data$name1
#数据框Data中名为name1的变量。
#数据框Data中第i个变量形成的数据框。
& merge(D1,D2)
#合并数据框D1和D2,需要D1和D2中有至少一个相同的变量。
##################################
#与逻辑型数据有关的基本操作
##################################
& is.data.frame(x)
#判断是否对象x是数据框。类似命令有is.ts(x),is.numeric(x)等。
& all(x&a)
#判断是否对象x的每个元素都大于a。
& any(x&a)
#判断对象x的元素中是否存在一个大于a。
#判断x的每个元素是否大于y的每个元素。
#向量x中大于a的元素组成的新向量。
& subset(x, x&a)
#向量x中大于a的元素组成的新向量。与上面例子的区别在于若向量元素里有NA,上面的例子会保留在结果中,而subset命令会剔除掉。
& which(x, x&a)
#返回向量中大于a的元素的位置。
& x = ifelse(b, u, v)
#生成一个与b(逻辑向量)维度相同的数值向量,若b[i]为TRUE,则x[i]为u,反之为v。
http://blog.sina.com.cn/s/blog_761bvbw2.html#comment
Sat, 17 Jan :33 +0800
http://blog.sina.com.cn/s/blog_761bvbw2.html
Linux常用命令英文全称与中文解释Linux系统
http://blog.sina.com.cn/s/blog_761bvbnz.html
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。
pwd:Print working directory 意思是密码。
su:Swith user 切换用户,切换到root用户
cd:Change directory 切换目录
ls:List files 列出目录下的文件
ps:Process Status 进程状态
mkdir:Make directory 建立目录
rmdir:Remove directory 移动目录
mkfs: Make file system 建立文件系统
fsck:File system check 文件系统检查
cat: Concatenate 串联
uname: Unix name 系统名称
df: Disk free 空余硬盘
du: Disk usage 硬盘使用率
lsmod: List modules 列表模块
mv: Move file 移动文件
rm: Remove file 删除文件
cp: Copy file 复制文件
ln: Link files 链接文件
fg: Foreground 前景
bg: Background 背景
chown: Change owner 改变所有者
chgrp: Change group 改变用户组
chmod: Change mode 改变模式
umount: Unmount 卸载
dd: 本来应根据其功能描述“Convert an copy”命名为“cc”,但“cc”已经被用以代表“C
Complier”,所以命名为“dd”
tar:Tape archive 解压文件
ldd:List dynamic dependencies 列出动态相依
insmod:Install module 安装模块
rmmod:Remove module 删除模块
lsmod:List module 列表模块
sudo是superuser do的简写
reboot:重启
logout :退出 注销
binary :二进制
device:设备 手段
etcetera:等等 系统配置文件
recursion:递归(-R)
disrecursion:不递归)(-d)
force:直接覆盖(-f)
all:所有的(-a)
list:列出所有信息(-l)
if:提示是否覆盖(-I)
普通文件(-):文本文件和二进制文件
目录文件(d):文件夹
连接文件(l):ln创建的文件
特殊文件:设备文件(b,c)和管道文件(p)
图形界面要注销就从菜单里选择或者快捷键ctrl+alt+backspace
修改登录界面启动:vi /etc/inittab
3 文本 5 图像
使用 man或info 查看有关命令的帮助
使用fdisk -l 显示分区情形;df -h显示磁盘使用情形
使用du -sh /*查看某个(根目录所有文件夹)目录占有磁盘情形
查看linux版本号:uname -a
清屏:clear
检查修复文件系统(非正常关机):fsck
查找文件:find /etc -name 文件名 (/etc为起始目录)
列出某个目录的详细信息:ls -l /etc(/etc为目录)
当前目录:cd . 上一层目录:cd .. 查看目录路径:pwd
创建目录:mkdir 1(1为文件名)
删除空目录:rmdir 1 删除不为空的目录或文件:rm -r(-f) 1
查看用户信息:vi /etc/passwd
隐式密码:vi /etc/shadow
查看某个文件的内容:cat /etc/inittab
移动文件:mv 1.c /root (移动1.c到root中)
创建文件:vi 1.c
复制文件到指定目录:cp /root/1.c/home/1.c(从root目录复制到home目录下)
比较两个文件:diff 1.c 2.c 或cmp 1.c 2.c
标准用户输入:cat (输入完后安ctrl d退出)
显示重定向:ls -l &
ls.txt(显示到ls.txt上;0&输入重定向;1&输出重定向;2&错误重定向)
设置文件的读写权限:chmod u+w 1.c(增加文件拥有者对1.c写的权限)
chmod g-r 1.c( 删除工作组对1.c读的权限)
chmod o+x 1.c(增加其他用户对1.c的执行权限)
chmod a-w 1.c(删除所有用户对1.c写的权限)
列出文件索引好:ls -i
构建软硬连接:in -s /home/lxt008 /008(将lxt008链接至008 即008是lxt008的快捷方式
若无-s就是硬链接)
查看DNS客户端配置:more /etc/resolv.conf
查看ip地址:ifconfig(看以上两者的ip是否相符,若不相符 使用下面的命令修改)
更改网络配置:netconfig(修改好后,要使用service network
restart重启网络后方能生效)
查看默认路关:route -n
修改默认网关:route add default gw
192.168.88.1(ip和默认网关在同一网段方能联网)
或使用 ifconfig eth0 192.168.88.8 netmask 255.255.255.0
修改ip和子网掩码
结束进程:ctrl+ c(或D)
查看网络状况:netstat
查看某个rpm包是否安装:rpm -qi a.rpm
安装某个包:rpm -ivh a.rpm
打包:tar -cvf lxt008.tar
/home/lxt008(将home目录下的路线图lxt008文件夹打包成lxt008.tar v是view简写
解包:tar -xvf lxt008.tar /home(解压到home中)
查看包的内容:tar -tvf lxt008.tar
打包并压缩:tar -czvf 008.tar.gz /home/lxtoo8
解压包:tar -xzvf 008.tar.gz /home
创建shell脚本:vi first.sh
显示字符串:echo "王林"
等待从终端输入给变量:read f(f为变量)
显示变量内容:echo ${f}
查看环境变量:env
不需要换行:-n
查看运行的进程:ps
杀掉某个线程:kill 是线程号)
将某个进程设为后台运行:find / -name passwd &(将find / -name
passwd进程设为后台运行)
管道:ls -l /dev | more (列出dev目录下的详细信息 又要分页)
vi编辑器中保存文件:w +文件名
显示行号::set nu&]]>
http://blog.sina.com.cn/s/blog_761bvbnz.html#comment
Wed, 14 Jan :01 +0800
http://blog.sina.com.cn/s/blog_761bvbnz.html
[转载]MPICH2用户指南【译文】(2)
http://blog.sina.com.cn/s/blog_761b.html
<![CDATA[5.4 SMPD进程管理环境的扩充(Extensions for SMPD Process Management
Environment)
SMPD是个轮询的进程管理器,可运行在Unix 和
Windows上。如果二进制格式匹配(大/小尾及C类型& int, long,
void*等等)的话,它可以跨平台地启动任务。
5.4.1 SMPD的mpiexec参数(mpiexec arguments for SMPD)
的mpiexec接受标准的MPI-2选项。执行mpiexec
&&& mpiexec
可以打印出选项的用法。典型的用法是:
&&& mpiexec -n
10 myapp.exe
mpiexec的全部选项:
启动x进程。
&&& -localonly
-localonly
在本地机器上启动x进程。
&&& -machinefile
用一个文件列出要在其上启动的机器名。
启动指定的主机。
&&& -hosts n
host1 host2 ... hostn
&&& -hosts n
host1 m1 host2 m2 ... hostn mn
启动指定的主机。用第2个版本号
&&& processes =
m1 + m2 + ... + mn
drive:myworkingdirectory
/my/working/directory
用特定的工作目录(-dir 和-wdir是等价的)启动主机。
&&& -env var
启动进程之前设置环境变量.
-exitcodes
每个进程退出时打印出进程退出代码。
阻止mpiexec提示用户证书。打印出错信息,mpiexec退出。
-localroot
如果主机是本地的,从mpiexec直接启动根进程。(这就允许根进程创建窗口并可以调试)。
指定smpd监听的端口。
&&& -phrase
passphrase
指定smpd与其认证连接的安全通行证。
&&& -smpdfile
指定smpd选项包括安全通行证保存的文件(仅unix选项)。
&&& -path search
可执行文件搜索路径,用分号隔开。
&&& -timeout
任务超时。
Windows 特定选项:&
drive:\hostshare
映射一个驱动器到所有的节点上,这个映射在进程退出时删除。
&&& -logon
提示用户账号及密码。
&&& -pwdfile
从指定的文件读取账号和密码。账号在第一行,密码在第二行。
&&& -nopopup
如果进程崩溃,禁止弹出对话框。
&&& -priority
class[:level]
设置进程启动代码的优先类和选项级别。
&&& class =
0,1,2,3,4 = idle, below, normal, above, high
&&& level =
0,1,2,3,4,5 = idle, lowest, below, normal, above, highest
默认的是 -priority 2:3
加密一个用户名和密码到Windows注册表。
从Windows注册表删除加密的身份证明。
&&& -validate
[-host hostname]
为当前或指定主机验证加密的身份证明。
用无密码委托启动进程。
-impersonate
用无密码认证启动进程。
-plaintext
不在线上加密。
5.5gforker进程管理环境扩充(Extensions for the gforker Process
Management Environment)
gforker是个在单一机器上期的进程的进程管理系统,之所以这么叫,是因为MPI进程是从mpiexec简单地调用(forked)的。这个进程管理器支持使用
spawn和动态进程子程序的程序,但是不支持从不是mpiexec启动的程序的动态子程序。gforker进程管理器主要是为了作为调试辅助的,因为它在单一节点或处理器上简化了MPI程序的开发与测试。
5.5.1 gforker的mpiexec参数(mpiexec arguments for gforker)
除了标准的mpiexec命令行参数之外,gforker的mpiexec支持下面的选项:
&与标准的-n参数意义相同
为由mpiexec开始的进程设置变量&name&的值
&&& -envnone
不传递环境变量(不同于用-env 或-genv参数指定的)给由mpiexec运行的进程。
默认地,所有的环境变量都提供给每个MPI进程(理论的根据:最少使用户惊讶原则),用其当前值给由mpiexec运行的进程。
-genv选项与其相应的-env版本意义相同,除了它们适用于所有的可执行文件之外,而不是当前的可执行文件(为此用分号隔开多个指定的可执行文件的句
&&& -genvnone 与
-envnone一样,除了对所有的可执行文件之外。
&&& -genvlist
-envlist,一样,除了对所有的可执行文件之外。
&&& -usize
&n&&为MPI UNIVERSE
SIZE属性值指定返回值。
用进程的层级标记出标准输出和标准错误信息(stdout 和 stderr)
&&& -maxtime
&n&&设置一个
&n&秒的时间限度。
&&& -exitinfo
如果存在一个意外退出,提供每个进程退出有关原因的更多信息。
除了命令行参数之外,gforker的 mpiexec还提供了一些环节变量,可以用来控制mpiexec的行为:
&&& MPIEXEC
TIMEOUT 以秒表示的mpiexec将结束的最大运行时间。
程序所占用时间比
&&& MPIEXEC
TIMEOUT.指定的值要长。
&&& MPIEXEC
UNIVERSE SIZE& 设置范围(universe)大小。
&&& MPIEXEC PORT
RANGE &设置mpiexec用来与其启动的进程交互通讯的端口范围。这个设置的格式为:
&low&:&high&.。例如,要指定端口在10000
and10100之间,用 。
&&& MPICH PORT
RANGE 与MPIEXEC PORT RANGE意义相同,如果MPIEXEC PORT RANGE没设置使用。
&&& MPIEXEC
PREFIX DEFAULT 如果这个环境变量设置了,那么输出到标准输出按进程的MPI COMM
WORLD的层级加前缀,到标准错误输出的按层级和文本加前缀;二者都后跟角括号(v)。如果这个变量没设置,那么不加前缀。
&&& MPIEXEC
PREFIX STDOUT 设置用于发送到标准输出的行的前缀。%d为MPI COMM WORLD中的层级替代,a
%w为MPI任务中的涉及多个MPI COMM WORLD的MPI COMM WORLD表示替代。(如,MPI Comm
spawn或者MPI Comm connect的)。
&&& MPIEXEC
PREFIX STDERR 与 MPIEXEC PREFIX STDOUT 一样,但用于标准错误输出。
&&& MPIEXEC
设置标准输出的缓冲模式。有效的值是NONE(无缓冲),LINE(行缓冲)和BLOCK(字符块缓冲;块大小定义实现)。默认值是NONE。
&&& MPIEXEC
STDERRBUF 与 MPIEXEC STDOUTBUF 一样,只是对标准错误输出。
5.6 remshell进程管理器环境的限制(Restrictions of the remshell Process
Management Environment)..
remshell&#8220;进程管理器&#8221;提供了利用安全shell命令(ssh)的mpiexec一个很简单的版本,用来在机器的集合上
启动进程。由于这主要是为了诠释如何构造mpiexec的与其他进程管理器协同的一个版本,所以它没有实现本文档中描述的其他mpiexec程序的全部特
征。尤其是,它忽略了对MPI程序控制环境变量的命令行部分。
它支持mpiexec的gforker版本所提供的标签输出同样的特征。但是这个版本的mpiexec完全可以像MPICH-1 中的 ch
p4的mpirun那么用,在一个机器集合上来运行允许远程shell的程序。按机器名的一个文件应该包含可以在其上运行进程的机器名,每行一台机器。必
须列出足够的机器来满足请求的进程数;如果必要的话,你可以列出同一机器名为多项。
对于更复杂的需要或者更快的启动代码,我们推荐使用mpd进程管理器。
5.7 SLURM 及 PBS一起使用MPICH2(Using MPICH2 with SLURM and PBS)
MPICH2可以用于SLURM 和 PBS
两种环境。如果配置了SLURM,用SLURM提供的srun任务启动工具。对于PBS,MPICH2任务可以用两种方式启动:(i)
用MPD,或者(ii)用OSC mpiexec。
5.7.1 PBS环境中的MPD(MPD in the PBS environment)
PBS指定分配在文件$PBS
NODEFILE中一个特定任务的机器。但是,PBS所用的格式不同于MPD所用的格式。尤其是,PBS列出单一线上的每个节点;如果一个节点(n0)有
两个进程,那么它被列出两次。另一方面,MPD使用一个标识符(ncpus)来描述一个节点所拥有多少处理器。因此,如果n0有两个处理器,那么它列出为
n0:2。把节点文件转化为MPD格式的方式如下:
&&& sort $PBS
NODEFILE | uniq -C | awk &{
printf(&#8221;%s:%s&#8221;, $2, $1);
}& &mpd.nodes
一旦PBS节点文件被转换之后,MPD就可以在PBS任务脚本之内,用mpdboot和mpdallexit照常启动了。
&&& mpdboot -f
mpd.hosts -n [NUM NODES REQUESTED]
&& mpiexec -n [NUM PROCESSES]
./my test program
5.7.2 OSC mpiexec
&&& 俄亥俄超级计算机中心的
Pete Wyckoff提供了一个轮询工具,叫做OSC
mpiexec,在PBS系统上不用MPD启动MPICH2任务。关于这些更多信息可以在http://www.osc.edu/&pw/mpiexec找到。
6 管理进程管理环境(Managing the Process Management Environment)
有些进程管理器提供给用户命令,可以用来与进程管理器交互,来控制人物。本节我们描述一些也许很有用的命令。
mpd启动mpd守护进程。
&mpdboot在一些机器上启动一系列mpd。
mpdtrace列出所有在运行的MPD守护进程。-l 选项列出完整的主机名和mpd监听的端口。
mpdlistjobs列出mpd正在运行的任务。任务是mpd&由名字区分的,在那提交的名字和一个数字。mpdkilljob杀死由
mpdlistjobs按名字返回的一个任务。mpdsigjob递交给命名任务一个信号。信号是用名字和数字指定的。
你可以用按键以通常的方式提供信号,其中mpiexec代表了整个应用程序。即,如果mpiexec后台运行在Unix的shell,那么你可以用^C
(control-C)发送一个SIGINT给进程,或者用^Z
(control-Z)全部挂起他们。一个可挂起的任务可以按通常的方式继续。
准确的参数格式可以通过传递任何MPD命令--help 或
-h参数得到。更多细节参见mpich2顶层目录中的README,或者MPD目录
mpich2/src/pm/mpd中的README文件。
7 调试(Debugging)
调试并行程序无疑很难。下面我们描述一些方法,其中某些完全取决于你所使用的MPICH2的版本。
7.1 gdb与mpiexec(gdb via mpiexec)
如果你使用MPD进程管理器,那么你可以对mpiexec用-gdb参数,来执行一个程序,每个进程控制在gdb后续调试器之下。
-gdb选项有助于控制gdb的多个实例,通过对所有进程,或者对一个选择的进程发送stdin,标签并合并输出。当前的实现还有某些局限。例如,我们不
支持设置你自己的提示。这是因为,我们捕获gdb的输出,在处理之前检查它,例如,合并一致的行。还有,我们在main开始处设置断点,来使得所有进程在
开始时同步。因而,如果在main的第一个可执行行就设置,那么用户会有个重复的、不可用的断点。另外,尽可能的程度上,我们试图简单地传递用户输入给
gdb ,让过程正常进行。
下面一个-gdb会话的脚本给出了这如何运转的机制。输入键被发送给所有进程,除非用
&#8220;z&#8221; 命令特别地重定向。
ksl2% mpiexec -gdb -n 10 cpi
0-9: (gdb) l
0-9: 5 double f(double);
0-9: 7 double f(double a)
0-9: 9 return (4.0 / (1.0 + a*a));
0-9: 12 int main(int argc,char *argv[])
0-9: 14 int done = 0, n, myid, numprocs,
0-9: (gdb)
0-9: 15 double PI25DT = 3.;
0-9: 16 double mypi, pi, h, sum,
0-9: 17 double startwtime = 0.0,
0-9: 19 char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
0-9: 23 MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
0-9: (gdb)
0-9: 26 fprintf(stdout,"Process %d of %d is on %sn",
0-9: 27 myid, numprocs, processor_name);
0-9: 28 fflush(stdout);
0-9: 30 n = 10000;
0-9: 31 if (myid == 0)
0-9: 32 startwtime = MPI_Wtime();
0-9: 34 MPI_Bcast(&n, 1, MPI_INT, 0,
MPI_COMM_WORLD);
0-9: (gdb) b 30
0-9: Breakpoint 2 at 0x2541:
file /home/lusk/mpich2/examples/cpi.c, line 30.
0-9: (gdb) r
0-9: Continuing.
0: Process 0 of 10 is on ksl2
1: Process 1 of 10 is on ksl2
2: Process 2 of 10 is on ksl2
3: Process 3 of 10 is on ksl2
4: Process 4 of 10 is on ksl2
5: Process 5 of 10 is on ksl2
6: Process 6 of 10 is on ksl2
7: Process 7 of 10 is on ksl2
8: Process 8 of 10 is on ksl2
9: Process 9 of 10 is on ksl2
0-9: Breakpoint 2, main (argc=1, argv=0x60000fffffffb4b8)
0-9: at /home/lusk/mpich2/examples/cpi.c:30
0-9: 30 n = 10000; * default # of rectangles */
0-9: (gdb) n
0-9: 31 if (myid == 0)
0-9: (gdb) n
0: 32 startwtime = MPI_Wtime();
1-9: 34 MPI_Bcast(&n, 1, MPI_INT, 0,
MPI_COMM_WORLD);
0-9: (gdb) z 0
0: (gdb) n
0: 34 MPI_Bcast(&n, 1, MPI_INT, 0,
MPI_COMM_WORLD);
0: (gdb) z
0-9: (gdb) where
0-9: #0 main (argc=1, argv=0x60000fffffffb4b8)
0-9: at /home/lusk/mpich2/examples/cpi.c:34
0-9: (gdb) n
0-9: 36 h = 1.0 / (double)
0-9: (gdb)
0-9: 37 sum = 0.0;
0-9: (gdb)
0-9: 39 for (i = myid + 1; i &= i +=
0-9: (gdb)
0-9: 41 x = h * ((double)i - 0.5);
0-9: (gdb)
0-9: 42 sum += f(x);
0-9: (gdb)
0-9: 39 for (i = myid + 1; i &= i +=
0-9: (gdb)
0-9: 41 x = h * ((double)i - 0.5);
0-9: (gdb)
0-9: 42 sum += f(x);
0-9: (gdb)
7 DEBUGGING 22
0-9: 39 for (i = myid + 1; i &= i +=
0-9: (gdb)
0-9: 41 x = h * ((double)i - 0.5);
0-9: (gdb)
0-9: 42 sum += f(x);
0-9: (gdb)
0-9: 39 for (i = myid + 1; i &= i +=
0-9: (gdb)
0-9: 41 x = h * ((double)i - 0.5);
0-9: (gdb)
0-9: 42 sum += f(x);
0-9: (gdb)
0-9: 39 for (i = myid + 1; i &= i +=
0-9: (gdb)
0-9: 41 x = h * ((double)i - 0.5);
0-9: (gdb)
0-9: 42 sum += f(x);
0-9: (gdb)
0-9: 39 for (i = myid + 1; i &= i +=
0-9: (gdb)
0-9: 41 x = h * ((double)i - 0.5);
0-9: (gdb)
0-9: 42 sum += f(x);
0-9: (gdb) p sum
0: $1 = 19.799
1: $1 = 19.725
2: $1 = 19.549
3: $1 = 19.328
4: $1 = 19.158
5: $1 = 19.203
6: $1 = 19.658
7: $1 = 19.769
8: $1 = 19.832
9: $1 = 19.192
0-9: (gdb) c
0-9: Continuing.
0: pi is approximately 3.1256, Error is
1-9: Program exited normally.
1-9: (gdb) 0: wall clock time = 44.909412
0: Program exited normally.
0: (gdb) q
0-9: MPIGDB ENDING
你可以附加到运行的任务,用
&&& mpiexec
-gdba &jobid&
其中&jobid&来自mpdlistjobs。
7.2 TotalView
MPICH2支持使用Etnus的TotalView调试器,只通过MPD进程管理器。如果MPICH2配置为允许用TotalView调试(参见安装指
南的MPD配置一节),那么就可以用MPD通过给mpiexec加-tv参数调试一个MPI程序了。如,
&&& mpiexec -tv
从TotalView你会得到一个弹出窗口,询问你是否要在停止的状态下启动任务。如果是这样,在TotalView窗口出现时,你也许会在源代码窗口中
看到装配的代码,点击堆栈窗口(左上角)中的main,查看main函数的源代码。TotalView会显示程序(所有的进程)在对MPI
Init调用处停下来了。当用TotalView使用上面启动序列时,MPICH2任务不执行TotalView就不能重新启动。在MPICH2
1.0.6或以后的,版本中TotalView可以对MPICH2如下地调用:
&&& totalview
python -a &which mpiexec& -tvsu
&mpiexec args&
&program& &program
MPICH2任务在TotalView之内是完全可以重新启动的。
如果你有MPICH2的1.0.6或以后的版本,TotalView
8.1.0或更高版本,那么你可以使用一个叫直接用MPICH2启动的TotalView特征。调用TotalView如下:
&&& totalview
&program& -a &program
然后选择Process(进程)/Startup Parameters
(启动参数)命令。在后面的对话框中选择Parallel(并行)选项卡,选择MPICH2作为并行系统。
用Tasks(任务)字段设置任务数,并在Additional Starter
Arguments(其他的启动参数)输入其他需要的mpiexec参数。
如果你想要能够用TotalView附加一个MPICH2任务,那么你必须在启动任务时,对mpiexec用-tvsu选项。
&&& 用这个选项会在MPI
Init 之内添加一个关卡,因而也许会稍微影响到启动性能。一旦所有的任务从MPI
Init返回,它不会影响任务的运行。为了调试一个正在运行的MPICH2任务,你必须把TotalView附加到运行mpiexec脚本的Python
的实例,而且不要有其他的Python脚本运行。如果你只有一个任务运行在你调用mpiexec的节点上,而没有其他的Python脚步运行,那么这个节
点上会有3个Python实例运行。其中之一是那个节点上的MPICH2任务的父进程,一个是Python进程的父进程。其中没有哪个是你要附加到其上的
Python实例--它们都是在运行的MPD脚本。第三个Python实例没有子进程,也不是一个Python进程的子进程。那是运行的mpiexec,
也就是你想要附加的。
MPICH2有个与MPICH1包含的相同的MPE(多进程环境)工具。
这些工具包含记录MPI程序执行的跟踪库和性能可视化的Jumpshot及SLOG工具,和一个MPI集合的数据类型检查库。这些MPE工具是默认地建立
与安装的,不用额外的查询步骤应该就可用。使用MPE profiling库的最容易的方式是通过MPICH2编译器包装的mpicc,
mpicxx, mpif77和 mpif90提供的 -mpe= switch。
8.1 MPI日志(MPI Logging)
MPE提供自动的MPI登录。例如,要查看一个程序的MPI通讯类型(pattern),fpilog.f,可以简单地如下链接到源文件:
&&& mpif90
-mpe=mpilog -o fpilog fpilog.f
-mpe=mpilog选项会链接合适的MPE
profiling库。然后通过mpiexec运行的程序会把结果记录到工作目录内一个日志文件logfile,未知的clog2。最后的步骤是通过Jumpshot转换及查看logfile。
&&& jumpshot
Unknown.clog2
8.2 用户自定义登录(User-defined logging)
除了使用预定义的MPE日志功能记录MPI调用之外,MPE记录日志调用还可以插入到用户的MPI程序,定义并吧状态记录到日志。这些状态叫用户自定义状
态。状态可以嵌套,允许你定义一个描述一个包含几个MPI调用的用户子程序,既显示用户自定义状态,又显示包含在其中的MPI操作。
插入用户自定义状态典型的方式如下:
& 从MPE 日志库获得句柄。MPE
Log获得日志状态eventIDs(),必须用来获得唯一的事件ID(MPE日志句柄
)。这是很重要的,如果你正在编写一个MPE系统的使用MPE日志子程序的库。记录下eventID的痕迹不是个好主意,因为它会引起eventID冲
突,因此实践中并不支持。
& 设置已记录日志的状态特征:MPE描述 state() 设置状态的名称和颜色。
&&把已记录的状态记录到日志: MPE Log
的event()被调用两次,记录用户自定义状态。
1 更老的MPE库提供MPE Log,获得事件number()还是被支持,但是一直有异议。用户强烈争执要使用 MPE
Log获得eventIDs()。
下面是个使用上面所概述的第三步的简单的例子。
eventID_begin, eventID_
MPE_Log_get_state_eventIDs( &eventID_begin,
&eventID_end );
MPE_Describe_state( eventID_begin, eventID_end,
"Multiplication", "red" );
MyAmult( Matrix m, Vector v )
MPE_Log_event( eventID_begin, 0, NULL );
... Amult code, including MPI calls ...
MPE_Log_event( eventID_end, 0, NULL );
由这段代码生成的logfile会使得MPI子程序在MyAmult()之内嵌套。
除了用户自定义的状态之外,MPE2还提供对用户自定义事件的支持,这自定义事件可以通过MPE
Log获得唯一的eventID()和MPE描述的event()而定义。更得细节,例如,参见cpilog.c。
8.3 MPI检查(MPI Checking)
要通过如下地连接源代码文件验证在一个程序中所有的MPI的合作调用:
&&& mpif90
-mpe=mpicheck -o wrong_reals wrong_reals.f
运行改程序会有下面的输出:
& mpiexec -n 4 wrong_reals
启动MPI的合作与数据类型检查!
&&& Process 3 of
4 is alive (4个进程的3个是活动的)。
&&& Backtrace of
the callstack at rank 3: (callstack的Backtrace运行在层次3:)
&&& At [0]:
wrong_reals(CollChk_err_han+0xb9)[0x8055a09]
&&& At [1]:
wrong_reals(CollChk_dtype_scatter+0xbf)[0x8057bff]
&&& At [2]:
wrong_reals(CollChk_dtype_bcast+0x3d)[0x8057ccd]
&&& At [3]:
wrong_reals(MPI_Bcast+0x6c)[0x80554bc]
&&& At [4]:
wrong_reals(mpi_bcast_+0x35)[0x80529b5]
&&& At [5]:
wrong_reals(MAIN__+0x17b)[0x805264f]
&&& At [6]:
wrong_reals(main+0x27)[0x80dd187]
&&& At [7]:
/lib/libc.so.6(__libc_start_main+0xdc)[0x9a34e4]
&&& At [8]:
wrong_reals[0x8052451]
&&& [cli_3]:
aborting job:
&&& Fatal error
in MPI_Comm_call_errhandler:
&&& Collective
Checking: BCAST (Rank 3) --& Inconsistent datatype
signatures
&&& detected
between rank 3 and rank 0. (在层级3和层级9之间检测到不一致的数据类型签名)
&&& The error
message here shows that the MPI Bcast has been used with
inconsistent
&&& datatype in
the program wrong reals.f. (这里的错误信息表示,MPI Bcast在程序中使用了不一致的数据类型)
8.4 MPE 选项(MPE options)
通过MPICH2编译器包装而可用的其他 MPE profiling选项有:
&&& -mpe=mpilog
: 自动的MPI 和 MPE用户自定义状态日志。
&&& This links
against -llmpe -lmpe.
-mpe=mpitrace : 用printf的Trace MPI 程序。
&&& This links
against -ltmpe.
&&& -mpe=mpianim
: 实时地激活(Animate)MPI程序。
&&& This links
against -lampe -lmpe.
-mpe=mpicheck : 用合作&数据类型检查MPI程序。
&&& Checking
library(检查库). This links against -lmpe_collchk.
-mpe=graphics : 与X11一起使用MPE图形子程序。
&&& This links
against -lmpe &X11 libraries&.
&&& -mpe=log :
MPE user-defined states logging.
&&& This links
against -lmpe.
&&& -mpe=nolog :
Nullify MPE user-defined states logging.
&&& This links
against -lmpe_null.
&&& -mpe=help :
Print the help page.
&&& 如何使用MPE
profiling工具更多信息,参见mpich2/src/mpe2/README。
9 MPICH2提供的其他工具(Other Tools Provided with MPICH2)
MPICH2还包含对于MPI-1 和
MPI-2功能的测试套件;这个套件可以在mpich2/test/mpi源代码目录找到,可以用命令行make
testing运行。这个测试套件应该可以与任何MPI实现运行起来,不只MPICH2。
10 Windows下的MPICH2(MPICH2 under Windows)
10.1 目录(Directories)
MPICH2默认的安装在C:Program FilesMPICH2。安装目录下有3个子目录: include, bin和lib。
include 和
lib目录包含编译MPI应用程序必要的头文件和库。bin目录包含进程管理器,smpd.exe,和MPI任务启动器mpiexec.exe。实现
MPICH2的dll被复制到Windows的system32目录。
10.2 编译(Compiling)
&&& lib目录中的库是用MS
Visual C++ .NET &2003和Intel Fortran
8.1编译的。这些编译器和其他的可以与MS .lib文件链接的,都可以用来创建用户应用程序。cygwin的gcc 和
g77可以与libmpich*.a一起用。对于MS Developer Studio用户:创建一个项目,添加 C:Program
FilesMPICH2include到包含路径, C:Program
FilesMPICH2lib到库路径。添加mpi.lib 和
cxx.lib到连接命令。Cygwin用户应该用libmpich2.a 。.
10.3 运行(Running)
MPI任务从命令行提示符用mpiexec.exe运行。关于mpiexec选项,对于smpd的描述,参见 5.4节。
常见问题(A Frequently Asked Questions)
This is the content of the online FAQ, as of June 23, 2006.
A.1 一般信息(General Information)
A.1.1 Q: MPICH2是什么(What is MPICH2)?
MPICH2是自由可用、可移植的MPI实现,是信息传递库的标准。它实现了MPI-1 和 MPI-2。
A.1.2 Q: MPICH是什么意思(What does MPICH stand for)?
References
[1] Message Passing Interface Forum. MPI2: A Message Passing
standard. International Journal of High Performance Computing
Applications,
12(1&2):1&299, 1998.
[2] Marc Snir, Steve W. Otto, Steven Huss-Lederman, David W.
and Jack Dongarra. MPI&The Complete Reference:
Volume 1, The
MPI Core, 2nd edition. MIT Press, Cambridge, MA, 1998.&]]>
http://blog.sina.com.cn/s/blog_761b.html#comment
Sun, 14 Dec :13 +0800
http://blog.sina.com.cn/s/blog_761b.html
[转载]MPICH2用户指南【译文】(1)
http://blog.sina.com.cn/s/blog_761b.html
MPICH2用户指南 (MPICH2
User&s Guide)
版本(Version )1.0.8
数学与计算机科学部(Mathematics and Computer Science Division)
阿贡国家实验室(Argonne National Laboratory)
William Gropp
Ewing Lusk
David Ashton
Pavan Balaji
Darius Buntinas
Ralph Butler
Anthony Chan
David Goodell
Jayesh Krishna
Guillaume Mercier
Rajeev Thakur
Brian Toonen
这项工作得到美国能源部科学局高级科学计算研究局Sci-DAC合约编号DE-AC02-06CH11357的规划,数据、信息与计算机科学部的分规划的支持。
1 引言(INTRODUCTION)
MPICH2.本手册假定MPICH2已经安装了。关于如何安装MPICH2,参见MPICH2安装指南,或者MPICH2顶层目录的README。本手
册解释如何编译、链接及运行MPI应用程序,使用于MPICH2一起的某些工具。这是个初步的版本,某些节还没完成。但是,这些应该足以帮你MPICH2
起步的了。
2 从MPICH1升级到MPICH2(Migrating to MPICH2 from MPICH1)
如果你一直在使用MPICH 1.2.x
(1.2.7p1是最新版本),那么你会发现一些有关MPICH2不同的东西(希望能更好)。当然了,虽然你的MPI程序不用改变,但是有些关于你运行它
们的方式则不同。
MPICH2是MPI标准的一个全新实现,其设计实现了加到MPI-2附件的全部(动态进程管理,片面操作,并行I/O及其他扩充),应用从MPICH1
实现所获得的教训,使得MPICH2更加健壮、有效及便于使用。MPICH2的安装指南提供有关MPICH1 与
MPICH2的改变某些信息,配置与安装MPICH的过程。在MPICH1 及 MPICH2之间编译、链接与运行MPI程序下面描述。
2.1 默认的运行环境(Default Runtime Environment)
在MPICH1中,默认的配置使用现在到老的p4可移植编程环境。进程通过远程shell启动(rsh 或
ssh),发现进程及通过套接字互相连接的必要信息被收集,在启动时(startup)以非可度量的方式发布。而且,进程管理功能与通讯机制的牵扯在出错
时会导致系统混淆的行为。
MPICH2提供进程管理与通信的分离。默认的运行时环境由一系列的守护进程(daemons)叫mpd的组成,在应用程序启动前建立所用机器之间的通
讯,因而在通信不能建立出错时提供了清晰的画面,在并行任务(job)启动时提供一种快速可度量的启动机制。6.1节详细地描述MPD进程管理系统。还有
其他可用的进程管理器。
2.2 启动并行任务(Starting Parallel Jobs)
MPICH1提供了mpirun命令来启动MPICH1任务。MPI-2论坛推荐一个标准的、可移植为此用途的命令叫做mpiexec。MPICH2与某
些扩充一起实现了mpiexec及其所有的标准的参数(arguments)。关于mpiexec的标准参数参见5.1节,扩充,尤其是对进程管理系统的
扩充,参见第5节的各个子节。MPICH2还提供一个mpirun命令简单地向前兼容,但是MPICH2的mpirun命令不提供mpiexec的,或者
MPICH1的mpirun的全部选项。
2.3 Fortran中的命令行参数(Arguments).
MPICH1(更准确

我要回帖

更多关于 js通过name获取对象 的文章

 

随机推荐