[Mono-dev] a set of tests to find out the difference between .Net and Mono implementation (Mono-devel-list Digest, Vol 113, Issue 25)
Jo Shields
directhex at apebox.org
Tue Sep 16 12:19:53 UTC 2014
On 16/09/14 12:31, Marek Safar wrote:
>> Linux, it's not. i do not think this is a Mono issue, but will it be better
>> to help set the execute permission if Process.Start calls a non-executable
>> file? or at least provide a more friendly exception, current the error
>> message is 'Cannot find the specified file', which is confusing.
>>
> We cannot just set the execution permission but reporting more useful
> exception is good idea. Could you fill bug/enhancement report for this.
There are a few use-cases to consider, if we want to automate any kind
of best effort.
If you really mean to execute an ELF binary which lacks execute
permissions, call "/lib/ld-linux.so.2 thing"
If you really mean to execute any kind of script (i.e. a file whose
first two characters are "#!") then call "/bin/sh thing"
If you really mean to execute an arbitrary file
(Process.Start("foo.xlsx") will open foo.xlsx in Excel, on Windows, for
example) then call "/usr/bin/xdg-open thing" - this is probably the most
useful use-case, and is also valid when thing is a URL, opening in the
default browser.
Only after those three cases are exhausted unsuccessfully is "just throw
an exception" the best option. We already recently gained support for
Process.Start("monoassembly.exe") without needing binfmt-tools, which is
handy. Of the three cases I listed above, I'd say #3 is quite important
for user tools behaving in a coherent cross-platform manner, #2 is nice
to have, and #1 is so unlikely to ever be needed as to be useless.
More information about the Mono-devel-list
mailing list