AV大片,日韩伦理一区,国产在线a,开心播播网婷婷在线

廣西南寧達內軟件科技有限公司

[其他技能培訓]
獵學網(wǎng)訂閱號
獵學網(wǎng)官方企業(yè)微信
位置: 獵學網(wǎng) > 學校機構 > 廣西南寧達內軟件科技有限公司 > 學習資訊> 24 種語言執(zhí)行外部命令的方法

24 種語言執(zhí)行外部命令的方法

45 2017-04-14

南寧達內:24種語言執(zhí)行外部命令的方法

在這個例子中展示用不同語言調用外部命令的方法。覺得這個挺有意思,轉來給大家看看,也許某一天你會覺得有用。

這些語言包括

Ada

AppleScript

C

C++

C#

E

Forth

Haskell

IDL

J

Java

Logo

MAXScript

Objective-C

OCaml

Perl

PHP

Pop11

Python

Raven

Ruby

Tcl

Toka

UNIXShell

原文在

Ada

01withInterfaces.C;useInterfaces.C;

02

03

04procedureExecute_Systemis

05

06functionSys(Arg:Char_Array)returnInteger;

07

08pragmaImport(C,Sys,"system");

09

10Ret_Val:Integer;

11

12begin

13

14Ret_Val:=Sys(To_C("ls"));

15

16endExecute_System;

AppleScript

1doshellscript"ls"withoutalteringlineendings

C

支持版本gccversion4.0.1

平臺:BSD

1#include

2

3intmain()

4{

5system("ls");

6}

C++

支持版本:VisualC++version2005

1system("pause");

C#

支持版本:MCSversion1.2.3.1

01usingSystem;

02

03classExecute{

04staticvoidMain(){

05System.Diagnostics.Processproc=newSystem.Diagnostics.Process();

06proc.EnableRaisingEvents=false;

07proc.StartInfo.FileName="ls";

08proc.Start();

09}

10

11}

E

01defls:=makeCommand("ls")

02

03ls("-l")

04

05

06

07def[results,_,_]:=ls.exec(["-l"])

08

09when(results)->{

10

11def[exitCode,out,err]:=results

12

13print(out)

14

15}catchproblem{

16

17print(`failedtoexecutels:$problem`)

18

19}

Forth

支持版本:gforthversion0.6.2

1s"ls"system

Haskell

支持版本:GHCiversion6.6

1importSystem.Cmd

2

3main=system"ls"

IDL

帶屏幕輸出的"ls":

$ls

將輸出保存到數(shù)組"result":

spawn,"ls",result

異步執(zhí)行,將輸出轉到LUN"unit",以便在以后讀取:

spawn,"ls",unit=unit

J

J語言系統(tǒng)命令界面由標準的"task"腳本提供:

load’task’

NB.Executeamandandwaitforittoplete

shell‘dir’

NB.Executeamandbutdon’twaitforittoplete

fork‘notepad’

NB.Executeamandandcaptureitsstdout

stdout=:shell‘dir’

NB.Executeamand,provideitwithstdin,

NB.andcaptureitsstdout

stdin=:‘blahblahblah’

stdout=:stdinspawn‘grepblah’

Java

支持版本:Javaversion1.4+

有兩種執(zhí)行系統(tǒng)命令的方法,簡單的方法會掛起JVM

01importjava.io.IOException;

02importjava.io.InputStream;

03

04publicclassMainEntry{

05

06publicstaticvoidmain(String[]args){

07executeCmd("ls-oa");

08}

09

10privatestaticvoidexecuteCmd(Stringstring){

11

12InputStreampipedOut=null;

13

14try{

15ProcessaProcess=Runtime.getRuntime().exec(string);

16

17aProcess.waitFor();

18pipedOut=aProcess.getInputStream();

19bytebuffer[]=newbyte[2048];

20intread=pipedOut.read(buffer);

21

22//Replacefollowingcodewithyourintendsprocessingtools

23while(read>=0){

24System.out.write(buffer,0,read);

25read=pipedOut.read(buffer);

26}

27}catch(IOExceptione){

28e.printStackTrace();

29}catch(InterruptedExceptionie){

30ie.printStackTrace();

31}finally{

32if(pipedOut!=null){

33try{

34pipedOut.close();

35}catch(IOExceptione){

36}

37}

38}

39}

40}

正確的方法使用進程提供的線程去讀取InputStream。

001importjava.io.IOException;

002

003importjava.io.InputStream;

004

005

006

007publicclassMainEntry{

008

009publicstaticvoidmain(String[]args){

010

011//themandtoexecute

012

013executeCmd("ls-oa");

014

015}

016

017

018

019privatestaticvoidexecuteCmd(Stringstring){

020

021InputStreampipedOut=null;

022

023try{

024

025ProcessaProcess=Runtime.getRuntime().exec(string);

026

027

028

029//Thesetwothreadshallstopbythemselfwhentheprocessend

030

031ThreadpipeThread=newThread(newStreamGobber(aProcess.getInputStream()));

032

033ThreaderrorThread=newThread(newStreamGobber(aProcess.getErrorStream()));

034

035

036

037pipeThread.start();

038

039errorThread.start();

040

041

042

043aProcess.waitFor();

044

045}catch(IOExceptione){

046

047e.printStackTrace();

048

049}catch(InterruptedExceptionie){

050

051ie.printStackTrace();

052

053}

054

055}

056

057}

058

059

060

061

062

063classStreamGobberimplementsRunnable{

064

065

066

067privateInputStreamPipe;

068

069

070

071publicStreamGobber(InputStreampipe){

072

073if(pipe==null){

074

075thrownewNullPointerException("badpipe");

076

077}

078

079Pipe=pipe;

080

081}

082

083

084

085publicvoidrun(){

086

087try{

088

089bytebuffer[]=newbyte[2048];

090

091

092

093intread=Pipe.read(buffer);

094

095while(read>=0){

096

097System.out.write(buffer,0,read);

098

099

100

101read=Pipe.read(buffer);

102

103}

104

105}catch(IOExceptione){

106

107e.printStackTrace();

108

109}finally{

110

111if(Pipe!=null){

112

113try{

114

115Pipe.close();

116

117}catch(IOExceptione){

118

119}

120

121}

122

123}

124

125}

126

127}

Logo

支持版本:UCBLogo

SHELL命令返回列表:

1printfirstbutfirstshell[ls-a];..

MAXScript

dosCommand"pause"

Objective-C

支持版本:蘋果公司的GCCversion4.0.1

1voidrunls()

2{

3[[NSTasklaunchedTaskWithLaunchPath:@"/bin/ls"

4arguments:[NSArrayarray]]waitUntilExit];

5}

如果你希望調用系統(tǒng)命令,先執(zhí)行shell:

1voidrunSystemCommand(NSString*cmd)

2{

3[[NSTasklaunchedTaskWithLaunchPath:@"/bin/sh"

4arguments:[NSArrayarrayWithObjects:@"-c",cmd,nil]]

5waitUntilExit];

6}

同樣可以使用上面的C語言調用方法。

OCaml

Sysmand"ls"

Perl

01my@result=qx(ls);

02#runsmandandreturnsitsSTDOUT

03

04my@results=`ls`;

05#dito,alternativesyntax

06

07system"ls";

08#runsmandandreturnsitsexitstatus

09

10print`ls`;

11#Thesame,butwithbackquotes

12

13exec"ls";

14#replacecurrentprocesswithanother

另外可以參閱

PHP

首行執(zhí)行命令,第二行顯示輸出:

1@exec(mand,$output);

2

3echonl2br($output);

注意這里的‘@’防止錯誤消息的顯示,‘nl2br’將‘\n’轉換為HTML的‘br’

Pop11

sysobey(’ls’);

Python

支持版本:Pythonversion2.5

1importos

2code=os.system(’ls’)#Justexecutethemand,returnasuccess/failcode

3output=os.popen(’ls’).read()#Ifyouwanttogettheoutputdata

或者

支持版本:Pythonversion2.4(及以上版本)

1importsubprocess

2output=subprocess.Popen(’ls’,shell=True,stdout=subprocess.PIPE).stdout

3printoutput.read()

后者是比較好的方法。

或者

支持版本:Pythonversion2.2(及以上版本)

1importmands

2stat,out=mands.getstatusoutput(’ls’)

3ifnotstat:

4printout

Raven

`ls-la`aslisting

或者指定任何字符串

‘ls-la’shellaslisting

Ruby

string=`ls`

Tcl

puts[execls]

同樣可以使用系統(tǒng)open命令。

setio[open"|ls"r]

獲取結果的方法是

setnextline[gets$io]

或者

setlsoutput[read$io]

如果命令是以RW方式打開,可以用同樣的方法發(fā)送用戶的輸入。

Toka

needsshell

"ls"system

UNIXShell

直接調用

ls

如果希望獲取標準輸出

CAPTUREDOUTPUT=$(ls)

在C-Shell中可以這樣做

setMYCMDOUTPUT=`ls`

echo$MYCMDOUTPUT

在KornShell中是這樣:

MYCMDOUTPUT=`ls`

echo$MYCMDOUTPUT

溫馨提示: 專業(yè)老師1對1為您解答    馬上填寫,¥1000 元豪禮免費領!

掃一掃
獲取更多福利

×
獵學網(wǎng)
欧洲黄页网站啊不要| 色婷婷成人网| 亚洲高清 码视频| 日本六十路| 鬼色综合| 欧美人妇一级免| 狠狠躁夜夜躁人人爽天天不卡软件 | 国产精品 青青草| 精品偷拍视频网址| 内射亚洲| 大 女被c| 日本一区日韩高清| 国产精品99久久久| 精久国产孕妇| 色哟视频在线观看| 午夜体验区| 亚洲欧洲在线看| 亚洲性福利下载| 亚洲欧洲成人精品香蕉网 | 如皋市| 久久精品麻豆| 印度黄色一级毛片| 六十路熟妇| 偷拍女厕视频一区二区| 日韩欧美六| 日韩午夜| 免费AV影视| 日韩在线中字| 在线超碰| 亚洲欧美日韩不卡| 奇米久久社区| 国产啊啊啊啊白浆好多| 青青久在线视频免费观看| 精东国产在线| 久久午夜yyser| 亚洲综合欧美在线一区在线播放| 十四岁带血AV毛片| 亚洲日韩欧美影片| 99精品人妻少妇一区二区| 欧美污站| wuma99|