2011-01-15 2 views
2

내 webapp에서는 아래 작업을 수행합니다. 나는 1) 텍스트 파일에 2) su www-data 3) 복사/붙여 넣기 문자열을 붙여 start_sz을 덤프 시도했기 때문에 그 정확한지 알고 그것은 효과가있다.모노 프로세스. bash를 찾는 방법을 시작 하시겠습니까?

var start_sz = string.Format(@"bash -c 'ln ""{2}/{0}"" ""{2}/{1}""'", fn, newfn, System.IO.Directory.GetCurrentDirectory()); 
Process.Start(start_sz); 

위의 추론에서 예외가 발생하므로 위의 bash를 찾을 수 없다고 생각합니다. 0

시스템에서 :

는 System.Diagnostics.Process.Start_shell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process가 공정)은 0x00000]에서에서 지정된 파일

를 찾을 수 없습니다 .Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process가 프로세스)은 0x00000]에서 0 System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo startInfo)에서

[은 0x00000] 0

System.Diagnostics.Process.Start (fileName에 선택 System.String)에서

[은 0x00000]에서 0 MySite.QueueManager.MakeLink (선택 System.String의 FN)은 0x00000]시

: 0

에서 MySite.QueueManager.ImageQueue2 ([은 0x00000]에) : MySite.QueueManager.ImageQueue에서 0

([은 0x00000]에) : 그래서

, 나는이 문제를 어떻게 해결합니까 0? 기본적으로 내 asp.net 응용 프로그램에서 런타임에 하드 링크 (소프트도 괜찮습니다)를 만들 필요가 있습니다.

어쩌면 나는 완전한 bash 경로가 필요하다고 생각 했으므로 /bin/bash -c을 시도했지만 그 중 하나도 작동하지 않았습니다.

답변

2

ln을 직접 호출하지 않으시겠습니까? bash없이? 등, 따라서 $PATH 환경 변수를 확인, 사실

Process.Start("/bin/ln", params); 

, 나를 위해 Process.Start("bash") 작품

+0

@ acidzombie24 : 다행히 도왔습니다! :) – abatishchev

+0

아아 # $ %^& * (! 나는 (문자열, 문자열)로 Process.Start를 호출해야했습니다.args가 파일 이름의 일부로 생각하여 파일을 찾을 수 없습니다. 왜 process.start를 사용하면 (name, "") 사용하지 않아도됩니다. 오류 발생이 훨씬 적습니다. –

+0

@ acidzombie24 :'Process.Start (문자열)'은'새로운 ProcessStartInfo (문자열)'과'Process.Start (문자열, 문자열)'-'새로운 ProcessStartInfo (문자열, 문자열)'을 생성합니다. 'ProcessStartInfo' 생성자들을보세요 : 하나는'arguments'를 설정하고, 다른 것은 - 아닙니다. 그래서 이것은 구문 - 설탕 과부하 일뿐입니다. – abatishchev

1

아니요, 을 셸에서 사용하는 경우 올바른지 알 수 있습니다.. 그 쉘은 Process.Start과는 달리 경로를 고려합니다.

bash의 전체 경로를 지정하면 거의 확실하게 /bin/bash이됩니다.

+0

롱샷을하지만 수행

Process.Start("ln", params); 

또한 당신은 전체 경로를 지정해야 할 수도 있습니다 Process.Start가 2 개의 매개 변수 (bin, args)를 강요하는 대신 하나의 param overload를 갖는 이유를 알고 있습니다. 나는 맹세 할 수 있었다. 나는 1 년 전 Process.Start를 사용했을 때 똑같은 오류가 있었다. (farback과 가끔씩 기억하는 방식. 두번이나 그렇게 많이 기억한다.) –

+0

@ acidzombie24 : Not JonSkeet 하지만 실제로는 실행 파일을 실행하고 매개 변수를 전달할 필요가없는 경우가 많습니다. – Guvante